首页 > 代码库 > 设计模式-状态模式
设计模式-状态模式
状态模式是针对系统的状态转换的,其主要的定义如下:
状态模式:允许对象在内部状态改变时改变他的行为,对象看起来好像修改了它的类。
为了方便状态转移 我们为状态定义一个通用的接口,然后每一种状态都实现这个接口,而在系统类中,通过构造函数,将系统本身传入状态类中,这样,每一种状态的改变,都可以在自己类的内部完成,同时提高了可扩展性:
public interface State{ public void des(); public void action();}public class State1 implements State{ Sys sys; public Sate1(Sys s) { this.sys=sys; } public void des(){ .../ implements } public void action(){ .../ change the state sys.setState(s.getState2()); }}public class State2 implements State{ Sys sys; public Sate2(Sys s) { this.sys=sys; } public void des(){ .../ implements } public void action(){ .../ change the state sys.setState(s.getState1()); }}public class Sys { private State1 state1; private State2 state2; private State state;//record the system‘s state ....//state1 & state2‘s setter & getter public Sys(State state) { this.state=state; } public void setState(State state) { this.state=state; } public void aciton() { state.action(); }}
虽然在实现上 状态模式和策略模式以及模板方法有些相似 但是几个设计模式完全不一样,策略模式是将可以互换的行为封装起来,然后使用委托的方法决定使用哪一个行为,模板方法则是由子类决定具体的如何实现算法中的某些步骤,而算法的流程是给定的,而状态模式则封装的是基于状态的行为,并将行为委托到当前状态,由当前状态来决定具体行为。
设计模式-状态模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。