简单工厂模式
实现了客户端与功能类的解耦 但是违反了类的单一职责原则,整个类的代码冗长,阅读难度、维护难度和测试难度也很大 违反了开闭原则,增添功能要修改源代码 适用场景: 工厂类负责创建的对象比较少,不会造成工厂方法中的业务逻辑太过复杂 客户端只知道传入工厂类的参数,对于如何创建对象并不关心 // 简单工厂模式 class AbstractFruit{ public: virtual void showName() = 0; }; class Apple : public AbstractFruit{ public: void showName() override{ cout << "我是苹果!" << endl; } }; class Banana : public AbstractFruit{ public: void showName() override{ cout << "我是香蕉!" << endl; } }; class Pear : public AbstractFruit{ public: void showName() override{ cout << "我是鸭梨!" << endl; } }; class FruitFactory{ public: static AbstractFruit* CreateFruit(string flag){ if(flag == "apple"){ return new Apple; } else if(flag == "banana"){ return new Banana; } else if(flag == "pear"){ return new Pear; } else{ return nullptr; } } }; int main() { AbstractFruit* fruit = FruitFactory::CreateFruit("apple"); fruit->showName(); delete fruit; fruit = FruitFactory::CreateFruit("banana"); fruit->showName(); delete fruit; fruit = FruitFactory::CreateFruit("pear"); fruit->showName(); delete fruit; return 0; }