设计模式学习之工厂方法模式用C++实现,设计模式工厂
分享于 点击 39083 次 点评:21
设计模式学习之工厂方法模式用C++实现,设计模式工厂
前文介绍了简单工厂模式,用起来很简单。但是如果要增加其他运算那么简单工厂模式就需要修改现有代码。这违背了开放-封闭原则(对扩展开放,对修改封闭)。工厂方法模式弥补了这种缺点。工厂方法模式,让子类决定实例化哪一个类。
UML图如下;
不需要判断条件,客户端直接根据自己的需求调用相应的工厂。
代码如下;(为了方便此处直接使用创建某产品作为例子)
//工厂类如下
//Factory #pragma once #include#include "Product.h" class IFactory { public: IFactory(); virtual product* createProduct()=0; }; class FactoryA:public IFactory { public: FactoryA(){}; virtual product* createProduct() { return new productA(); } }; class FactoryB:public IFactory { public: FactoryB(){}; virtual product* createProduct() { return new productB(); } };
//产品类
//Product #pragma once #includeclass product { public: product(){}; virtual void show() = 0; }; class productA:public product { public: productA(){}; virtual void show() { printf("productA\n"); } }; class productB:public product { public: productB(){}; virtual void show() { printf("profuctB\n"); } };
//主函数调用
#include "Factory.h" int main(int argc, char* argv[]) { IFactory* fac = new FactoryA(); product* prod = fac->createProduct(); prod->show(); return 0; }
工厂方法模式弥补类简单工厂模式违背开放-封闭的原则的缺陷,更利于扩展。
用户点评