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 ]
[
下一页 ]