设计模式---简单工厂模式

简单工厂模式:又称为静态工程发放模式,属于类的创建型模式,通过它根据自变量的不同返回不同的类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。

简单工厂模式的优点:工厂类含有必要的判断逻辑,可以决定在什么时候创建哪一个chanp类的实例,客户端可以免除直接创建产品对象的责任,而仅仅“消费产品”。简单工厂模式通过这种方法实现了创建和使用对象的分离。客户端代码简介,无需知道所创建具体产品的类名,只需要知道相应的参数,可以减少使用者的记忆负担。

简单工厂模式的缺点:工厂类集中了所有产品创建逻辑,一旦不能正常工作,整个系统都要受到影响。增加了系统中类的数量,增加了系统的复杂度和理解难度。系统扩展困难,一旦添加新产品就不得不修改工厂逻辑,有可能造成工厂逻辑过于复杂,不利于扩展。简单工厂模式通常使用静态工厂方法,造成工厂角色无法形成基于继承的等级结构。

具体事例:

有一个OEM制造商代理做HP笔记本电脑(Laptop),后来该制造商得到了更多的品牌笔记本电脑的订单AcerLenovoDell,该OEM商发现,如果一次同时做很多个牌子的本本,有些不利于管理。利用工厂模式改善设计

#include<iostream>
using namespace std;
class Laptop{
public:
	Laptop(){}
	virtual void Product(){}
};
class Dell : public Laptop{
public:
	Dell(){}
	void Product(){
		cout << "生产Dell" << endl;
	}
};
class Acer : public Laptop{
public:
	Acer(){}
	void Product(){
		cout << "生产Acer" << endl;
	}
};
class Lenovo : public Laptop{
public:
	Lenovo(){}
	void Product(){
		cout << "生产Lenovo" << endl;
	}
};
class HP : public Laptop{
public:
	HP(){}
	void Product(){
		cout << "生产HP" << endl;
	}
};


class Factory{
public:
	Factory(){}
	Laptop* CreateLaptop(string ch);
};
Laptop* Factory::CreateLaptop(string ch){
	if (ch=="HP")
		return new HP();
	else if (ch=="Acer")
		return new Acer();
	else if (ch=="Lenovo")
		return new Lenovo();
	else if (ch == "Dell")
		return new Dell();
	else
		return NULL;


}




int main(){
	Factory factory;
	Laptop* laptop = factory.CreateLaptop("Dell");
	laptop->Product();
	Laptop* laptop2 = factory.CreateLaptop("Acer");
	laptop2->Product();
	system("pause");
	return 0;
}


猜你喜欢

转载自blog.csdn.net/archar_saber/article/details/79844533