1700477489
duckling=new BeautifyAppearance(duckling);
1700477490
1700477491
//其次行为也发生了改变
1700477492
1700477493
duckling=new StrongBehavior(duckling);
1700477494
1700477495
//虽然还是叫丑小鸭,但是已经发生了很大变化
1700477496
1700477497
duckling.desAppaearance();//小鸭子的新外形
1700477498
1700477499
duckling.cry();//小鸭子的新叫声
1700477500
1700477501
duckling.fly();//小鸭子的新行为
1700477502
1700477503
}
1700477504
1700477505
}
1700477506
1700477507
运行结果如下所示:
1700477508
1700477509
===很久很久以前,这里有一只丑陋的小鸭子===
1700477510
1700477511
外形是脏兮兮的白色,毛茸茸的大脑袋
1700477512
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
[
上一页 ]
[ :1.700477489e+09 ]
[
下一页 ]