1700478390
1700478391
====儿童的主要工作=====
1700478392
1700478393
儿童的工作是玩耍!
1700478394
1700478395
====成年人的主要工作=====
1700478396
1700478397
成年人的工作就是先养活自己,然后为社会做贡献!
1700478398
1700478399
====老年人的主要工作=====
1700478400
1700478401
老年人的工作就是享受天伦之乐!
1700478402
1700478403
通过采用策略模式我们实现了“工作”这个策略的三种不同算法,算法可以自由切换,到底用哪个算法由调用者(高层模块)决定。策略模式的使用重点是算法的自由切换——老的算法退休,新的算法上台,对模块的整体功能没有非常大的改变,非常灵活。而如果想要增加一个新的算法,比如未出生婴儿的工作,只要继承WorkAlgorithm就可以了。
1700478404
1700478405
1700478406
1700478407
1700478408
设计模式之禅 32.2.2 状态模式实现人生
1700478409
1700478410
我们再来看看使用状态模式是如何实现该需求的。随着时间的变化,人的状态变化了,同时引起了人的工作行为改变,完全符合状态模式。我们来看类图,如图32-5所示。
1700478411
1700478412
1700478413
1700478414
1700478415
图32-5 状态模式实现人生的类图
1700478416
1700478417
这与策略模式非常相似,基本上就是几个类名称的修改而已,但是其中蕴藏的玄机就大了,看看代码你就会明白。我们先来看抽象状态类,如代码清单32-25所示。
1700478418
1700478419
代码清单32-25 人的抽象状态
1700478420
1700478421
public abstract class HumanState{
1700478422
1700478423
//指向一个具体的人
1700478424
1700478425
protected Human human;
1700478426
1700478427
//设置一个具体的人
1700478428
1700478429
public void setHuman(Human_human){
1700478430
1700478431
this.human=_human;
1700478432
1700478433
}
1700478434
1700478435
//不管人是什么状态都要工作
1700478436
1700478437
public abstract void work();
1700478438
1700478439
}
[
上一页 ]
[ :1.70047839e+09 ]
[
下一页 ]