欢迎大家来到IT世界,在知识的湖畔探索吧!
状态模式(State Pattern):
一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。
状态模式主要解决,当控制一个对象状态的条件表达式过于复杂时的情况;把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简化;
状态模式的角色:
上下文环境(Context)角色、抽象状态(State)角色、具体状态(Concrete State)和客户端(Client)角色;
状态模式的案例:
实现类图:
实现代码:
/**
* 上下文环境(Context)角色
*/
public class Context {
private State state;
public Context() {
state = null;
}
public void setState(State state) {
this.state = state;
}
public State getState() {
return state;
}
}
欢迎大家来到IT世界,在知识的湖畔探索吧!
欢迎大家来到IT世界,在知识的湖畔探索吧!/**
* 抽象状态(State)角色
*/
public interface State {
public void doAction(Context context);
}
/**
* 具体状态(Concrete State)
*/
public class StartState implements State {
public void doAction(Context context) {
System.out.println("Player is in start state.");
context.setState(this);
}
public String toString() {
return "Start State";
}
}
欢迎大家来到IT世界,在知识的湖畔探索吧!/**
* 具体状态(Concrete State)
*/
public class StopState implements State {
public void doAction(Context context) {
System.out.println("Player is in stop state.");
context.setState(this);
}
public String toString() {
return "Stop State";
}
}
/**
* 客户端
*/
public class Client {
public static void main(String[] args) {
Context context = new Context();
StartState startState = new StartState();
startState.doAction(context);
System.out.println(context.getState().toString());
StopState stopState = new StopState();
stopState.doAction(context);
System.out.println(context.getState().toString());
}
}
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/13312.html