C++设计模式(二)之工厂方法模式

    xiaoxiao2023-09-29  160

    二、工厂方法模式

    类图

    动机

    个人理解:基于简单工厂方法模式之上,减轻工厂类负担,将具体某个产品创建交给某个某个具体的工厂。定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法是一个类的实例化延迟到其子类

    角色

    (1)抽象工厂 所有具体工厂的基类,提供了生产抽象产品的方法。 (2)具体工厂 具体某个生产某个具体产品的工厂。 (3)抽象产品 所有具体产品的基类。 (4)具体产品

    优缺点

    优点: 减轻简单工厂方法工厂类的职责,增加某个具体产品时不需要修改工厂类的方法,只需要添加对应的工厂类就行。

    缺点: 每次添加一个具体产品就得对应添加一个具体工厂,当添加较多类时,会造成系统庞杂,不易管理。

    代码:

    抽象产品 class AbstractProduct {

    }; 具体产品A class ConcreteProductA: public AbstractProduct { … }; 抽象工厂 class Factory { public: virtual AbstractProduct GetProduct(); … }; 工厂A class FactoryA:public Factory { public : … Abstract AbstractProduct * GetProduct(); };

    AbstractProduct* Factory::GetProduct(std::string productID) { AbstractProduct* pAbstractProductA= new ConcreteProductA(); return pAbstractProductA; }

    最新回复(0)