标签:一个 margin 方法 com 分离 状态模式 语句 info oid
类图地解释:
状态模式将特定的行为局部化,只有状态之间知道如何转换状态,对外部变化为状态变化,同时不同状态的行为通过类进行了切割和分离。通过状态的分离,减少了判断语句,同时减少了代码之间的依赖。当一个对象的行为取决于状态,同时状态必须能够在运行期间改变它的行为,就可以使用状态模式了。
package statePattern; /** * @author :dazhu * @date :Created in 2020/4/3 16:38 * @description: * @modified By: * @version: $ */ //主类 public class Main { public static void main(String[]args){ State1 s1 = new State1(); StateHolder sh = new StateHolder(s1); sh.disPlay(); //不断地请求,不断地展示 sh.changeState(); sh.disPlay(); sh.changeState(); sh.disPlay(); sh.changeState(); sh.disPlay(); sh.changeState(); sh.disPlay(); } } //接口类 /** * 状态的接口,所有不同的状态都要实现这个接口 * 接口里有什么尼? */ public interface State { public void showSelf(); public void Handle(StateHolder sh); } //状态类 public class State1 implements State{ @Override public void Handle(StateHolder sh) { sh.state = new State2(); } @Override public void showSelf() { System.out.println("State1"); } } public class State2 implements State{ @Override public void Handle(StateHolder sh) { sh.state = new State3(); } @Override public void showSelf() { System.out.println("State2"); } } public class State3 implements State{ @Override public void Handle(StateHolder sh) { sh.state = new State4(); } @Override public void showSelf() { System.out.println("State3"); } } public class State4 implements State{ @Override public void Handle(StateHolder sh) { sh.state = new State1(); } @Override public void showSelf() { System.out.println("State4"); } } //状态拥有者 public class StateHolder { public State state = null; //构造方法,用来初始化状态持有则, public StateHolder(State state){ this.state = state; } //切换自己的状态 public void changeState(){ state.Handle(this); } //显示自己的状态 public void disPlay(){ state.showSelf(); } }
标签:一个 margin 方法 com 分离 状态模式 语句 info oid
原文地址:https://www.cnblogs.com/dazhu123/p/12627914.html