您的位置:首页 > 编程语言 > C语言/C++

设计模式 - 工厂方法(Factory Method) C++实现

2015-04-21 21:36 751 查看



工厂方法(Factory Method)

意图:定义一个用于创建对象的接口,让子类决定实例化哪个类。解决简单工厂模式不支持开闭原则的缺点。
实现:如UML图所示,客户类针对抽象产品类和抽象工厂类编程。当需要添加一个产品的时候,只需要增加一个产品类和对应的工厂类。符合开闭原则

uml:



ps 发现了一个Linux下面画UML很好用的软件 astah (community版免费)

#include <iostream>

using namespace std;

class AbsProduct {
public :
virtual void draw() = 0;
};

class ProductA : public AbsProduct {
public :
virtual void draw() {
cout << "Product A" << endl;
}
};

class ProductB : public AbsProduct {
public :
virtual void draw() {
cout << "Product B" << endl;
}
};

class AbsFactory {
public :
virtual AbsProduct * createProduct() = 0;
};

class FactoryA : public AbsFactory {
public :
virtual AbsProduct * createProduct() {
AbsProduct * product = new ProductA();
return product;
}
};

class FactoryB : public AbsFactory {
public :
virtual AbsProduct * createProduct() {
AbsProduct * product = new ProductB();
return product;
}
};

int main() {
AbsFactory * factory = new FactoryA();
AbsProduct * product = factory->createProduct();
product->draw();
delete factory;
factory = new FactoryB();
delete product;
product = factory->createProduct();
product->draw();
delete factory;
factory = NULL;
delete product;
product = NULL;

return 0;
}


运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: