java状态机设计模式及实现(java状态机在订单中应用)

状态模式(State Pattern):

一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。

状态模式主要解决,当控制一个对象状态的条件表达式过于复杂时的情况;把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简化;

状态模式的角色:

上下文环境(Context)角色、抽象状态(State)角色、具体状态(Concrete State)和客户端(Client)角色;

状态模式的案例:

实现类图:

java状态机设计模式及实现(java状态机在订单中应用)-1

实现代码:

/**  * 上下文环境(Context)角色  */ public class Context { 	 	private State state;  	public Context() { 		state = null; 	}  	public void setState(State state) { 		this.state = state; 	}  	public State getState() { 		return state; 	} 	 }
/**  * 抽象状态(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"; 	}  }
/**  * 具体状态(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());  	}  }

秒鲨号所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈!本站将在三个工作日内改正。
(0)

大家都在看

品牌推广 在线咨询
返回顶部