1700477513
叫声是克噜——克噜——克噜
1700477514
1700477515
不能飞行
1700477516
1700477517
===小鸭子终于发现自己是一只天鹅====
1700477518
1700477519
外表是纯白色的,非常惹人喜爱!
1700477520
1700477521
叫声是克噜——克噜——克噜
1700477522
1700477523
会飞行了!
1700477524
1700477525
使用装饰模式描述丑小鸭蜕变的过程是如此简单,它关注了对象功能的强化,是对原始对象的行为和属性的修正和加强,把原本被人歧视、冷落的丑小鸭通过两次强化处理最终转变为受人喜爱、羡慕的白天鹅。
1700477526
1700477527
1700477528
1700477529
1700477530
设计模式之禅 31.2.2 用适配器模式实现丑小鸭
1700477531
1700477532
采用适配器模式实现丑小鸭变成白天鹅的过程要从鸭妈妈的角度来分析,鸭妈妈有5个孩子,它认为这5个孩子都是她的后代,都是鸭类,但是实际上是有一只(也就是丑小鸭)不是真正的鸭类,她是一只小白天鹅,就像《木兰辞》中说的“雄兔脚扑朔,雌兔眼迷离。双兔傍地走,安能辨我是雄雌?”同样,因为太小,差别太细微,很难分辨,导致鸭妈妈认为她是一只鸭子,从鸭子的审美观来看,丑小鸭是丑陋的。通过分析,我们要做的就是要设计两个对象:鸭和天鹅,然后鸭妈妈把一只天鹅看成了小鸭子,最终时间到来的时候丑小鸭变成了白天鹅。我们来看类图,如图31-4所示。
1700477533
1700477534
1700477535
1700477536
1700477537
图31-4 适配器模式实现丑小鸭
1700477538
1700477539
类图非常简单,我们定义了两个接口:鸭类接口和天鹅类接口,然后建立了一个适配器UglyDuckling,把一只白天鹅封装成了小鸭子。我们来看代码,先看鸭类接口,如代码清单31-13所示。
1700477540
1700477541
代码清单31-13 鸭类接口
1700477542
1700477543
public interface Duck{
1700477544
1700477545
//会叫
1700477546
1700477547
public void cry();
1700477548
1700477549
//鸭子的外形
1700477550
1700477551
public void desAppearance();
1700477552
1700477553
//描述鸭子的其他行为
1700477554
1700477555
public void desBehavior();
1700477556
1700477557
}
1700477558
1700477559
鸭类有3个行为,一个是鸭会叫,一个是外形描述,还有一个是综合性的其他行为描述,例如会游泳等。我们来看鸭妈妈的4个正宗孩子,如代码31-14所示。
1700477560
1700477561
代码清单31-14 小鸭子
1700477562
[
上一页 ]
[ :1.700477513e+09 ]
[
下一页 ]