1.用意
状态模式允许一个对象在其内部状态改变的时候改变其行为。这个对象看上去就像是改变了它的类一样。
2.类图
3.代码
/* * 环境角色 */ public class Context { private State state; public void sampleOperation() { state.sampleOperation(); } public void setState(State state) { this.state = state; } } /* * 抽象状态 */ public interface State { void sampleOperation(); } /* * 具体状态类A */ public class ConcreteStateA implements State { public void sampleOperation() { S.s("ConcreteState::A"); } } /* * 具体状态类B */ public class ConcreteStateB implements State { public void sampleOperation() { S.s("ConcreteState::B"); } } /* * 测试类 */ public class Test { public static void main(String[] args) { Context c = new Context(); c.setState(new ConcreteStateA()); c.sampleOperation(); c.setState(new ConcreteStateB()); c.sampleOperation(); } }
z
1.用意
状态模式允许一个对象在其内部状态改变的时候改变其行为。这个对象看上去就像是改变了它的类一样。
扫描二维码关注公众号,回复:
814545 查看本文章
2.类图
3.代码
/* * 环境角色 */ public class Context { private State state; public void sampleOperation() { state.sampleOperation(); } public void setState(State state) { this.state = state; } } /* * 抽象状态 */ public interface State { void sampleOperation(); } /* * 具体状态类A */ public class ConcreteStateA implements State { public void sampleOperation() { S.s("ConcreteState::A"); } } /* * 具体状态类B */ public class ConcreteStateB implements State { public void sampleOperation() { S.s("ConcreteState::B"); } } /* * 测试类 */ public class Test { public static void main(String[] args) { Context c = new Context(); c.setState(new ConcreteStateA()); c.sampleOperation(); c.setState(new ConcreteStateB()); c.sampleOperation(); } }
z
1.用意
状态模式允许一个对象在其内部状态改变的时候改变其行为。这个对象看上去就像是改变了它的类一样。
2.类图
3.代码
/* * 环境角色 */ public class Context { private State state; public void sampleOperation() { state.sampleOperation(); } public void setState(State state) { this.state = state; } } /* * 抽象状态 */ public interface State { void sampleOperation(); } /* * 具体状态类A */ public class ConcreteStateA implements State { public void sampleOperation() { S.s("ConcreteState::A"); } } /* * 具体状态类B */ public class ConcreteStateB implements State { public void sampleOperation() { S.s("ConcreteState::B"); } } /* * 测试类 */ public class Test { public static void main(String[] args) { Context c = new Context(); c.setState(new ConcreteStateA()); c.sampleOperation(); c.setState(new ConcreteStateB()); c.sampleOperation(); } }
z