打字猴:1.700473847e+09
1700473847
1700473848 this.CurrentState.handle1();
1700473849
1700473850 }
1700473851
1700473852 public void handle2(){
1700473853
1700473854 this.CurrentState.handle2();
1700473855
1700473856 }
1700473857
1700473858 }
1700473859
1700473860 环境角色有两个不成文的约束:
1700473861
1700473862 ❑把状态对象声明为静态常量,有几个状态对象就声明几个静态常量。
1700473863
1700473864 ❑环境角色具有状态抽象角色定义的所有行为,具体执行使用委托方式。
1700473865
1700473866 我们再来看场景类如何执行,如代码清单26-17所示。
1700473867
1700473868 代码清单26-17 具体环境角色
1700473869
1700473870 public class Client{
1700473871
1700473872 public static void main(String[]args){
1700473873
1700473874 //定义环境角色
1700473875
1700473876 Context context=new Context();
1700473877
1700473878 //初始化状态
1700473879
1700473880 context.setCurrentState(new ConcreteState1());
1700473881
1700473882 //行为执行
1700473883
1700473884 context.handle1();
1700473885
1700473886 context.handle2();
1700473887
1700473888 }
1700473889
1700473890 }
1700473891
1700473892 看到没?我们已经隐藏了状态的变化过程,它的切换引起了行为的变化。对外来说,我们只看到行为的发生改变,而不用知道是状态变化引起的。
1700473893
1700473894
1700473895
1700473896
[ 上一页 ]  [ :1.700473847e+09 ]  [ 下一页 ]