简单工厂模式/策略模式/装饰模式

1.简单工厂模式,简单说就是封装/继承

2.策略模式,也是侧重于继承,策略模式特指具备唯一性选择的情况,比如人穿衣服,只允许其穿一件衣服,自然,衣服需要用继承实现.

3.装饰模式.装饰模式与策略模式有一点类似,就是继承.仍然举人与衣服的例子,衣服仍然需要继承实现.但是,不同的是.这里不用两个类,用一个类,人看做是父类,衣服看做是其子类,关键的是,衣服维护一个"人"成员.这样就变成了,不是人穿衣服,而是衣服往人身上穿.


由此看来,装饰模式与策略模式很类似,都需要用继承,都需要在客户程序使用时做选择判断.唯一不同的是,类由两个变成了一个.而书中所谓装饰模式防止类膨胀,其实是针对完全用人类去实现的方式,就是说直接给人类子类化.显然这是不合理的.当然,这也不是说的策略模式的情况.

 

4.简单工厂模式与策略模式有个共同点是,它们都有一个单独的工厂类,用于创建对象。举例来说吧:

有家禽类(父类), 包含一个下蛋方法;鸡、鸭、鹅三种子类;还有个家禽工厂类(客户程序用)


(1)简单工厂模式

客户程序必须知道家禽类,家禽工厂类;家禽工厂类维护一个成员函数,用于根据参数的不同,创建或鸡或鸭或鹅子类对象,对象指针交给家禽类;客户程序利用指针调用家禽类(父类)的下蛋方法,根据c++多态性,则其实际调用子类方法。

 

 

(2)策略模式

客户程序只需要知道家禽工厂类; 家禽工厂类维护一个成员函数,用于根据参数的不同,创建或鸡或鸭或鹅子类对象,对象指针交给家禽类;家禽工厂类维护一个成员函数,调用家禽类的下蛋方法, 根据c++多态性,则其实际调用子类方法。客户程序调用家禽工厂类的这个成员函数,从而实现了调用家禽类的下蛋方法。

 

由此可以看出,策略模式比简单工厂模式的优点是,客户程序只需要知道家禽工厂类。

 

策略模式和简单工厂模式只关心一种事物,家禽。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值