打字猴:1.700478489e+09
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
1700478513 private HumanState state;
1700478514
1700478515 //设置一个状态
1700478516
1700478517 public void setState(HumanState_state){
1700478518
1700478519 this.state=_state;
1700478520
1700478521 this.state.setHuman(this);
1700478522
1700478523 }
1700478524
1700478525 //人类的工作
1700478526
1700478527 public void work(){
1700478528
1700478529 this.state.work();
1700478530
1700478531 }
1700478532
1700478533 }
1700478534
1700478535 定义一个Human类代表人类,也就是状态模式中的环境角色,每个人都会经历从孩童到成年人再到老年人这样一个状态过渡(当然了,老顽童周伯通的情况我们就没有考虑进来),随着状态的改变,行为也改变。我们来看场景类,如代码清单32-30所示。
1700478536
1700478537 代码清单32-30 场景类
1700478538
[ 上一页 ]  [ :1.700478489e+09 ]  [ 下一页 ]