状态模式_用类来表示状态,允许一个对象在其内部状态改变时改变它的行为
/**
* @author maikec
* @date 2019/5/16
*/
public abstract class AbstractState {
@Getter
@Setter
protected String name;
// public AbstractState(String name){
// this.name = name;
// }
/**
* 获取状态信息
*/
public abstract void getStateInfo();
}
/**
* @author maikec
* @date 2019/5/16
*/
public class Context {
protected AbstractState state;
public void setState(AbstractState state){
this.state = state;
}
/**
* 报告当前是什么状态
*/
public void whatState(){
state.getStateInfo();
}
}
/**
* @author maikec
* @date 2019/5/16
*/
public class DownState extends AbstractState {
public DownState(String name) {
super.name = name;
}
@Override
public void getStateInfo() {
System.out.println( "So down:"+getName() );
}
}
/**
* @author maikec
* @date 2019/5/16
*/
public class HighState extends AbstractState {
public HighState(String name){
super.name = name;
}
@Override
public void getStateInfo() {
System.out.println( "So High:"+getName() );
}
}
/**
* @author maikec
* @date 2019/5/16
*/
public class StateDemo {
public static void main(String[] args) {
AbstractState downState = new DownState( "Down Down" );
final Context context = new Context();
context.setState( downState );
context.whatState();
AbstractState highState = new HighState( "High High" );
context.setState( highState );
context.whatState();
}
}
附录
github.com/maikec/patt… 个人GitHub设计模式案例
声明
引用该文档请注明出处