1700478440
1700478441
抽象状态定义了一个具体的人(human)必须进行工作(work),但是一个人在哪些状态下完成哪些工作则是由子类来实现的。我们先来看孩童状态,如代码清单32-26所示。
1700478442
1700478443
代码清单32-26 孩童状态
1700478444
1700478445
public class ChildState extends HumanState{
1700478446
1700478447
//儿童的工作就是玩耍
1700478448
1700478449
public void work(){
1700478450
1700478451
System.out.println(“儿童的工作是玩耍!”);
1700478452
1700478453
super.human.setState(Human.ADULT_STATE);
1700478454
1700478455
}
1700478456
1700478457
}
1700478458
1700478459
ChildState类代表孩童状态,在该状态下的工作就是玩耍。读者看着可能有点惊奇,在work方法中为什么要设置下一个状态?因为我们的状态变化都是单方向的,从孩童到成年人,然后到老年人,每个状态转换到其他状态只有一个方向,因此会在这里看到work有两个职责:完成工作逻辑和定义下一状态。
1700478460
1700478461
我们再来看成年人状态和老年人状态,分别如代码清单32-27、32-28所示。
1700478462
1700478463
代码清单32-27 成年人状态
1700478464
1700478465
public class AdultState extends HumanState{
1700478466
1700478467
//成年人的工作就是先养活自己,然后为社会做贡献
1700478468
1700478469
@Override
1700478470
1700478471
public void work(){
1700478472
1700478473
System.out.println(“成年人的工作就是先养活自己,然后为社会做贡献!”);
1700478474
1700478475
super.human.setState(Human.OLD_STATE);
1700478476
1700478477
}
1700478478
1700478479
}
1700478480
1700478481
代码清单32-28 老年人状态
1700478482
1700478483
public class OldState extends HumanState{
1700478484
1700478485
//老年人的工作就是享受天伦之乐
1700478486
1700478487
@Override
1700478488
1700478489
public void work(){
[
上一页 ]
[ :1.70047844e+09 ]
[
下一页 ]