1.描述
工厂模式是简单工厂模式的优化,将简单工厂中静态创建对象方法拆分为一个对象一个工厂类。
2.优点
1)解决简单工厂中违背开放封闭原则,简单工厂中添加新对象需要修改简单工厂中case,在多态工厂中是添加新产品的工厂和新产品类,没有对已有的代码进行修改。
2)工厂不是简单工厂有静态方放不可继承,可继承,实现多态和可拓展。
3.缺点
新增产品都会增加产品工厂类,增加了系统的复杂程度。
以后使用反射会更好优化类的增加
4.结构
抽象产品:
具体产品:
抽象工厂:
具体工厂:创建具体产品实例
5.UML
客户端直接调用具体工厂类来创建产品。
扫描二维码关注公众号,回复:
9325289 查看本文章
6.示例
#include "stdafx.h"
#include <iostream>
//1.抽象产品
class clothes
{
public:
virtual void show() = 0;
};
//2.具体产品
class TShirts :public clothes
{
public:
void show()
{
std::cout << "T恤";
};
};
//3.抽象工厂
class closthesFactory
{
public:
virtual clothes * CreateClosthes() = 0;
};
//4.具体工厂
class TShirtsFactory
{
public:
clothes * CreateClosthes()
{
std::cout << "T恤工厂创建";
clothes * aa = new TShirts;
return aa;
};
};
int main()
{
TShirtsFactory tShirtsFactory;
clothes *bb = tShirtsFactory.CreateClosthes();//此处不知道具体的产品是什么,封装在工厂中
bb->show();
getchar();
return 0;
}
结果:T恤工厂创建T恤