工厂模式Factory

    xiaoxiao2022-06-24  36

    工厂模式是创建型模式的一种,又可以根据需求的复杂度分为简单工厂和抽象工厂。

    简单工厂用于创建具有公共基类的对象,抽象工厂则可以创建具有不同基类的对象。

    一般采用静态工厂方法来实现更为elegant。

    下面给出UML类图和C++的示例代码:

    #ifndef __FACTORY_H__ #define __FACTORY_H__ #include "Product.h" class CFactory { public: static IProduct* CreateProduct(EPRODUCT_TYPE eType) { switch (eType) { case EPRODUCT_TYPE_TA: return new CProductTA; case EPRODUCT_TYPE_TB: return new CProductTB; default: return NULL; } } }; #endif // __FACTORY_H__#ifndef __PRODUCT_H__ #define __PRODUCT_H__ enum EPRODUCT_TYPE { EPRODUCT_TYPE_TA, EPRODUCT_TYPE_TB, }; class IProduct { protected: IProduct() {} virtual ~IProduct() {} public: virtual void Test() = 0; }; class CProductTA : public IProduct { public: CProductTA() {} ~CProductTA() {} public: void Test() {printf("CProductTA::Test()\n");} }; class CProductTB : public IProduct { public: CProductTB() {} ~CProductTB() {} public: void Test() {printf("CProductTB::Test()\n");} }; #endif // __PRODUCT_H__#include "stdafx.h" #include "Factory.h" int _tmain(int argc, _TCHAR* argv[]) { CFactory::CreateProduct(EPRODUCT_TYPE_TA)->Test(); CFactory::CreateProduct(EPRODUCT_TYPE_TB)->Test(); getchar(); return 0; }

    ithewei 认证博客专家 c/c Qt libhv 编程之路,其路漫漫,吾将上下而求索https://github.com/itheweihttps://hewei.blog.csdn.net
    转载请注明原文地址: https://ju.6miu.com/read-1123988.html

    最新回复(0)