模式:行为型模式
优点:
- 随着状态的改变,那么其行为也被改变了。
- 符合开闭原则。例如下面的例子,我们可以不必修改上下文就可以更改其行为;可以随时增加 state 或减少。
- 条件、分支语句的代替者。
缺点:
- 多种状态造成系统类的增多。
✨ 代码
上下文
public interface Context {
public void setState(State state);
public void print();
}
上下文实现
public class DefaultContext implements Context {
private State state;
public State getState() {
return state;
}
public void setState(State state) {
this.state = state;
}
@Override
public void print() {
this.state.print();
}
}
状态抽象
public interface State {
public String doAction(Context context);
public void print();
}
状态实现1
public class StartState implements State {
@Override
public String doAction(Context context) {
context.setState(this);
return null;
}
@Override
public void print() {
System.out.println("StartState");
}
}
状态实现2
public class EndState implements State {
@Override
public String doAction(Context context) {
context.setState(this);
return null;
}
public void print(){
System.out.println("EndState");
}
}