state模式(红绿灯问题)

    技术2025-03-25  14

    5,state模式理解 作者:罗鹏 email: luopeng@ec.com.cn 主要是用于状态的变化,就象红绿灯一样 如何使用state模式 1,要一个状态管理类 2,状态接口 3,各种子状态实现状态接口 State模式的效果 1)它将与特定状态的行为局部化,并且将不同的行为分割开来 2)它使得状态转化显式化 3)State对象可以被共享 state模式中谁定义状态转化?? state模式中并没有指定哪一个参与者定义状态转换准则。换句话说,它们可以在Contex t中定义,也可以在state子类自身指定她们的后继状态以及何时进行转换,后者通常更 灵活。 public interface State{ public abstract void handleGreen(State state); public abstract void handleRed(State state); public abstract State getColor(); } public class Manage { private State state=null; public Manage(State state) { this.state=state; } public void changeToGreen() { this.state=new GreenLight(); state.handleGreen(state); } public void changeToRed() { this.state=new RedLight(); state.handleRed(state); } } public class GreenLight implements State { public State state=null; public State getColor() { return state; } public void handleGreen(State state) { System.out.println("绿灯,前进"); } public void handleRed(State state) { System.out.println(","); } } public class RedLight implements State { public State state=null; public State getColor() { return state; } public void handleGreen(State s) { System.out.println(",cc"); } public void handleRed(State s) { System.out.println("红灯,Stop!!"); } } public class Test { public Test() { } public static void main(String[] args) { GreenLight state=new GreenLight(); Manage manage=new Manage(state); manage.changeToRed(); manage.changeToGreen(); manage.changeToGreen(); manage.changeToGreen(); manage.changeToRed(); } } GOF片段赏析 1,Decrator 模式不同于Adapter模式,因为装饰仅改变对象的职责而不改变它的接口, 而适配器将给对象一个全新的接口。 2,Composite模式:可以将装饰视为一个退化的、仅有一个组件的组合。然而,装饰仅 给对象添加一些额外的职责---它的目的不是在于对象聚集
    最新回复(0)