版权声明:本文为博主原创文章,未经博主允许不得转载。个人公众号:百草疯茂 https://blog.csdn.net/wang_pengyu/article/details/84892037
package com.test.DPs.XingWei.State;
/**
* 行为型:State-状态 外观:作用面为 对象
*
* 用途:允许一个对象在其内部状态改变时改变它的行为。对象看起来改变它的类。
*
* 理解:通过状态改变(触发、开关)行为;(状态可主动)
* 该行为影响某些操作。
*/
class State{
private String value;
public String getValue(){
return value;
}
public void setValue(String value){
this.value = value;
}
public void method1(){
System.out.println("execute the first opt!");
}
public void method2(){
System.out.println("execute the second opt!");
}
}
class Context{
private State state;
public Context(State state){
this.state = state;
}
public State getState(){
return state;
}
public void setState(State state){
this.state = state;
}
public void method(){
if(state.getValue().equals("state1")) {
state.method1();
} else if (state.getValue().equals("state2")) {
state.method2();
}
}
}
class Test {
public static void main(String[] args) {
State state = new State();
Context context = new Context(state);
state.setValue("state1"); //设置第一种状态, 内部发生变化
context.method();
state.setValue("state2"); //设置第二种状态
context.method();
}
}