什么网站自己做名片好,长沙市网站设计公司,app和网站哪个有优势,苏州企业做网站工厂模式 概述简单工厂模式介绍示例示例使用运行结果缺点 概述
工厂模式属于一种创建型设计模式。其可以分为简单工厂模式#xff0c;工厂模式和抽象工厂模式。工厂模式分为上、中、下三篇#xff0c;本篇主要介绍简单工厂模式。
简单工厂模式
介绍
简单工厂模式可以理解… 工厂模式 概述简单工厂模式介绍示例示例使用运行结果缺点 概述
工厂模式属于一种创建型设计模式。其可以分为简单工厂模式工厂模式和抽象工厂模式。工厂模式分为上、中、下三篇本篇主要介绍简单工厂模式。
简单工厂模式
介绍
简单工厂模式可以理解为一个工厂根据产品的种类生产多种不同的产品。简单工厂模式只有一个工厂类工厂类中提供一个工厂函数用于根据产品种类生产各种不同产品。
示例
下面给出一个示例来加深理解简单工厂模式。 有一个工厂Factory生产塑料笔筒PlasticPenHolder和铁制笔筒IronPenHolder。
enum MyPenHolder
{plasticHolder,//塑料笔筒ironHolder//铁制笔筒
};class PenHolder
{
public:virtual void introduce() 0;
};class PlasticPenHolder :public PenHolder
{
public:void introduce()override {cout I am PlasticPenHolder! endl;}
};class IronPenHolder :public PenHolder
{
public:void introduce()override {cout I am IronPenHolder! endl;}
};class Factory
{
public:PenHolder* createPenHolder(enum MyPenHolder type) {if (type plasticHolder){return new PlasticPenHolder;}else if (type ironHolder){return new IronPenHolder;}else {return nullptr;}}
};示例使用
int main()
{MyPenHolder type MyPenHolder::plasticHolder;MyPenHolder type1 MyPenHolder::ironHolder;Factory *factory new Factory;PenHolder *holder factory-createPenHolder(type);PenHolder *holder1 factory-createPenHolder(type1);holder-introduce();holder1-introduce();delete holder;delete holder1;delete factory;return 0;
}运行结果 缺点
当需要生产的产品的种类增加时工厂类就需要修改打破了程序设计原则中的封闭原则。