packagemode.State;publicabstractclassState{protectedint x ;publicabstractStatesetX(int x);publicabstractStringstatus();publicState(int x){super();this.x = x;}}
packagemode.State;classStateOKextendsState{publicStateOK(int x){super(x);// TODO 自动生成的构造函数存根}@OverridepublicStatesetX(int x){// TODO 自动生成的方法存根this.x = x;return x>=42?(newStatusNo(x)):this;}@OverridepublicStringstatus(){// TODO 自动生成的方法存根return"OK";}}
packagemode.State;publicclassStatusNoextendsState{publicStatusNo(int x){super(x);// TODO 自动生成的构造函数存根}@OverridepublicStatesetX(int x){// TODO 自动生成的方法存根return x<=22?(newStateOK(x)):this;}@OverridepublicStringstatus(){// TODO 自动生成的方法存根return"NO";}}
packagemode.State;publicclassMeasure{publicString loc ="DL";privateState state =newStateOK(0);publicvoidchangeState(int x){
state = state.setX(x);}publicvoidoutput(){System.out.println("地区:"+loc+"\n State:"+state.status());}}
packagemode.State;publicclassClient{publicstaticvoidmain(String[] args){Measure measure =newMeasure();int[] x ={18,22,42,20,45};for(int i:x){
measure.changeState(i);
measure.output();}}}