个人网站图片加载慢,seo中文含义,做网页要钱吗,青岛seo建站工厂模式 工厂模式介绍示例示例使用运行结果工厂模式与简单工厂模式区别 工厂模式
工厂模式在简单工厂模式的基础之上进行了改进。当需要生产的产品种类增加#xff0c;可以通过新增子类工厂来生产#xff0c;没有破坏程序设计原则中的开放封闭原则。
介绍
工厂模式先抽象… 工厂模式 工厂模式介绍示例示例使用运行结果工厂模式与简单工厂模式区别 工厂模式
工厂模式在简单工厂模式的基础之上进行了改进。当需要生产的产品种类增加可以通过新增子类工厂来生产没有破坏程序设计原则中的开放封闭原则。
介绍
工厂模式先抽象出一个抽象工厂再子类化抽象工厂将对应产品对象的创建放在子类工厂中。也就是一个子工厂负责生产一种产品即具体的产品对象由对应的具体的子工厂创建。当产品种类增加只需增加新的子工厂来生产遵守开放封闭原则。
示例
本示例接上篇的简单工厂模式。在原本示例的基础上进行改进。将采用简单工厂设计模式的示例改为采用工厂设计模式的示例。
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 BaseFactory
{
public:virtual PenHolder * createPenHolder() 0;
};class PlasticFactory :public BaseFactory
{
public:PenHolder* createPenHolder()override {return new PlasticPenHolder;}
};class IronFctory :public BaseFactory
{
public:PenHolder* createPenHolder() override{return new IronPenHolder;}
};示例使用
int main()
{cout 工厂模式输出 endl;BaseFactory *baseFactory1 new PlasticFactory;PenHolder* penHolder1 baseFactory1-createPenHolder();penHolder1-introduce();delete penHolder1;delete baseFactory1;BaseFactory *baseFactory2 new IronFctory;PenHolder* penHolder2 baseFactory2-createPenHolder();penHolder2-introduce();delete penHolder2;delete baseFactory2;return 0;
}运行结果 工厂模式与简单工厂模式区别
相同点 简单工厂模式和抽象工厂模式都是创建型设计模式。 不同点 1.简单工厂模式只有一个工厂类通过该工厂类生产不同的产品代码结构简单易懂。工厂模式先是抽象出一个抽象工厂类在抽象工厂类中提炼出一个纯虚的工厂函数派生出不同的子工厂类重写抽象类中的工厂函数生产不同的产品对象一种产品对应一个子工厂类相对于简单工厂代码复杂性增加。 2.简单工厂模式当产品的种类增加时需要修改工厂函数破环了开放封闭原则。工厂模式当产品种类增加只需增加新的子工厂类来生产新的产品遵守了程序设计的开放封闭原则具有很好的扩展性和易维护性。但也有一个弊端当产品种类很多的时候从抽象工厂类派生的子工厂类就会很多造成了程序的继承过大。 3.建档工厂模式适用于需求相对简单的产品创建。工厂模式适用于复杂产品的创建需求。