设计模式的C++实现 24.简单工厂模式
2014-10-12 21:41
459 查看
简单工厂模式,又称静态工厂模式,属于创造型模式,但又不是23中GOF设计模式之一。简单工厂是由一个工厂对象决定创造出哪种产品类的实例。简单工厂模式是工厂模式中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。
简单工厂通过传入的参数判断创建哪一个产品的实例,封装了对象的创建,客服端看到的只是产品的抽象对象,不关心返回子类的类型。
简单来说,简单工厂就是调用是传入一个参数来告诉工厂类要创建一个什么样的对象,然后工厂类返回这个对象。
缺点是 没添加一个产品子类,都要在工厂类中添加一个判断分支,这违背了开闭原则。
class bass{
public:
virtual void fun() = 0;
bass(){}
virtual ~bass(){}
};
class A : public bass{
public:
virtual void fun(){cout<< "A"<<endl;}
A(){}
virtual ~A(){}
};
class B : public bass{
public:
virtual void fun(){cout<< "B"<<endl;}
B(){}
virtual ~B(){}
};
class SimpleFactory{
public:
SimpleFactory(){}
~SimpleFactory(){}
bass* createProduct(const string type);
};
bass* SimpleFactory::createProduct(const string type){
bass* product = NULL;
if(type == "A"){
product = new A();
}else if(type == "B"){
product = new B();
}else{
assert(false);
}
return product;
}
简单工厂通过传入的参数判断创建哪一个产品的实例,封装了对象的创建,客服端看到的只是产品的抽象对象,不关心返回子类的类型。
简单来说,简单工厂就是调用是传入一个参数来告诉工厂类要创建一个什么样的对象,然后工厂类返回这个对象。
缺点是 没添加一个产品子类,都要在工厂类中添加一个判断分支,这违背了开闭原则。
class bass{
public:
virtual void fun() = 0;
bass(){}
virtual ~bass(){}
};
class A : public bass{
public:
virtual void fun(){cout<< "A"<<endl;}
A(){}
virtual ~A(){}
};
class B : public bass{
public:
virtual void fun(){cout<< "B"<<endl;}
B(){}
virtual ~B(){}
};
class SimpleFactory{
public:
SimpleFactory(){}
~SimpleFactory(){}
bass* createProduct(const string type);
};
bass* SimpleFactory::createProduct(const string type){
bass* product = NULL;
if(type == "A"){
product = new A();
}else if(type == "B"){
product = new B();
}else{
assert(false);
}
return product;
}
相关文章推荐
- 设计模式C++实现一:简单工厂模式
- 设计模式之简单工厂模式:c++实现
- 简单工厂设计模式C++实现
- 设计模式 简单工厂 c++实现
- 设计模式 -- 简单工厂模式 -- c++实现
- 设计模式之简单工厂C++实现
- 设计模式学习笔记一 简单工厂策略模式实现销售策略的变更(一)
- .C++设计模式之一 工厂模式(简单工厂、工厂和抽象工厂)
- [转]C++设计模式之一 工厂模式(简单工厂、工厂和抽象工厂)
- (C++)设计模式------单例模式 singleton(简单的实现和对象释放的控制) -- 创建型模式
- C#基础:抽象类和抽象方法实现多态以及简单工厂设计模式的语法
- C++设计模式-----简单工厂
- C++设计模式之一 工厂模式(简单工厂、工厂和抽象工厂)
- C++设计模式之一 工厂模式(简单工厂、工厂和抽象工厂)
- 设计模式C++实现——工厂模式
- 设计模式之(简单工厂)(C#实现)(程杰)
- 《大话设计模式》读书笔记(C++代码实现) 第一章:简单工厂模式
- 设计模式C++实现(1)——工厂模式
- C++设计模式之简单工厂模式
- C++设计模式之一 工厂模式(简单工厂、工厂和抽象工厂)zz