[Design Pattern] 简单工厂模式
简单工厂模式
在工厂类中通过方法(传入参数)来创建对象。
优点:
1. 使客户端与具体实现解耦
2. 对于创建某些创造过程复杂的对象,直接将创建交给工厂
缺点:
1. 新增类需要修改工厂类中代码,不符合开闭原则
2. 工厂类指责过重。需要多个条件判断来创造对象
所以该模式不属于23类设计模式。
参考代码:(以水果为例)
class Fruit { public: virtual void showName() = 0; };
class Apple : public Fruit { public: virtual void showName() { cout << "I am apple." << endl; } }; class Banana : public Fruit { public: virtual void showName() { cout << "I am banana." << endl; } }; class Pear : public Fruit { public: virtual void showName() { cout << "I am pear." << endl; } }; class FruitFactory { public: static Fruit* createFruit(const string& name) { if (name == "apple") return new Apple(); else if (name == "banana") return new Banana(); else if (name == "pear") return new Pear(); else return NULL; } }; int main() { FruitFactory* factory = new FruitFactory(); Fruit* apple = factory->createFruit("apple"); apple->showName(); delete factory; delete apple; return 0; }
适用场景
1. 工厂类负责创建对象较少。由于创建对象较少,不会造成工厂的业务逻辑过于复杂
2. 客户端只需要构造的参数,不需要关心构造的过程