工厂方法(Factory Method)模式

意图:

         定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类。这样,核心工厂类不再负责产品的创建,仅负责为具体工厂类提供必须实现的接口,这样的好处是可以使系统在不修改工厂角色情况下引入新的产品(新增一个具体工厂类即可)

解决的问题:

         应用类不能预测那个实例子类被实例化,仅知道一个新的对象何时应被创建。该模式把处理延迟到子类,由子类决定实例化哪个类。

适用性:

         当一个类不清楚它所必须创建的对象的类的时候

         一个类希望由它的子类来指定它所创建的对象的时候。

UML描述:


p.s :右边第一个note表示CreateProduct的实现

实现相关:

1)      使用具体工厂(抽象工厂可作为抽象类,也可能定义缺省方法)

2)      可以使用参数化工厂方法来使得工厂方法可以创建多种产品。工厂方法采用一个标识来指定要被创建的对象种类的参数(如枚举类型的参数)。可以直接由Creator创建产品,若需要扩充的话再生成子类(覆盖产品的创建方法,增加需要的产品,而把默认的处理交给基类),如

typedef enum productID{ PRODUCTA, PRODUCTB } ProductID;
            Productor * Create::Creator (ProductId  id)
            {
                        switch(id) :
                                     case PRODUCTA: return new ProductA; break;
                                     …
       }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值