通过自己所掌握的C++语言,实现对24种设计模式深刻理解。主要是对每一个模式动机,所具有的角色以及优缺点分析。
一个工厂类负责所有需要物品。客户端只需要输入某种条件或者触发因子,由工厂负责产生具体某个产品对象。
(1)工厂类Factory:工厂类是用来制负责生产产品。在工厂类中,需要产生对象产品的函数。这个函数能够根据“标识符”的不同生成不同的ConcreteProduct,ConcreteProduct都是继承自AbstractProduct。
(2)抽象产品类AbstractProduct:抽象产品是从其他具体产品基类。抽象产品类只有一个。
(3)具体产品类ConcreteProduct:具体产品类继承自抽象产品类,可以有多个。当需要增加新的产品的时候就增加一个继承自抽象产品类的具体产品类。
优点: 实现松耦合,当增加具体某个产品时,只需要增加某个产品对象即可。 缺点: 1. 不符合单一职责原则,工厂类功能过于复杂。 2. 违反了开闭原则,工厂类需要添加代码,用来返回所增加的的对象产品。
抽象产品 class AbstractProduct { …
}; 具体产品A class ConcreteProductA: public AbstractProduct { … };
具体产品B class ConcreteProductB :public AbstractProduct { … }; 工厂类 class Factory { public : … AbstractProduct* GetProduct(std::string productID); };
AbstractProduct* Factory::GetProduct(std::string productID) { AbstractProduct* pAbstractProduct = null; if(“A” == productID) { pAbstractProduct = new ConcreteProductA; } else if(“B” == productID) { pAbstractProduct = new ConcreteProductB; } return pAbstractProduct ; }