概述
在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,这样做的目的是将产品类的实例化操作延迟到工厂子类中完成。
优点
用来创建客户所需要的产品,同时还向客户隐藏了哪种具体产品类将被实例化这一细节,用户只需要关心所需产品对应的工厂,无须关心创建细节,甚至无须知道具体产品类的类名。
缺点
在添加新产品时,需要编写新的具体产品类,而且还要提供与之对应的具体工厂类,系统中类的个数将成对增加,在一定程度上增加了系统的复杂度。
类图
代码块
#include <iostream>
using namespace std;
class Product
{
};
class ProductA : public Product
{
public:
ProductA()
{
cout << "i am ProductA " << endl;
}
};
class ProductB : public Product
{
public:
ProductB()
{
cout << "i am ProductB " << endl;
}
};
class Factory
{
public:
virtual Product *createProduct() = 0;
};
class FactoryA : public Factory
{
public:
Product *createProduct()
{
return new ProductA();
}
};
class FactoryB : public Factory
{
public:
Product *createProduct()
{
return new ProductB();
}
};
int main()
{
Factory *fc = new FactoryB();
Product * pro = fc->createProduct();
delete pro;
delete fc;
return 0;
}
参考
2. 工厂方法模式(Factory Method Pattern) — Graphic Design Patterns
标签:子类,模式,工厂,具体,产品,创建 来源: https://blog.csdn.net/weixin_43382051/article/details/122739441
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。