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(){
1700478490
1700478491
System.out.println(“老年人的工作就是享受天伦之乐!”);
1700478492
1700478493
}
1700478494
1700478495
}
1700478496
1700478497
每一个HumanState的子类都代表了一种状态,虽然实现的方法名work都相同,但是实现的内容却不同,也就是在不同的状态下行为随之改变。我们来看环境角色是如何处理行为随状态的改变而改变的,如代码清单32-29所示。
1700478498
1700478499
代码清单32-29 环境角色
1700478500
1700478501
public class Human{
1700478502
1700478503
//定义人类都具备哪些状态
1700478504
1700478505
public static final HumanState CHIILD_STATE=new ChildState();
1700478506
1700478507
public static final HumanState ADULT_STATE=new AdultState();
1700478508
1700478509
public static final HumanState OLD_STATE=new OldState();
1700478510
1700478511
//定义一个人的状态
1700478512
[
上一页 ]
[ :1.700478463e+09 ]
[
下一页 ]