[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. 客户端只需要构造的参数,不需要关心构造的过程

原文地址:https://www.cnblogs.com/immjc/p/9120579.html