操作型模式之State(状态)模式

来源:互联网 发布:ubuntu重置软件设置 编辑:程序博客网 时间:2024/05/22 04:24

1.如果你期望各个类都实现一个操作,每个类代表一个不同的状态,可使用State(状态)模式
2.举例

//状态抽象类public abstract class State {    abstract void handle();}
//状态A类public class StateA extends State{    @Override    void handle() {        // TODO Auto-generated method stub        System.out.println("StateA");    }}
//状态B类public class StateB extends State{    @Override    void handle() {        // TODO Auto-generated method stub        System.out.println("StateB");    }}
//状态管理者:根据用户操作来决定采用哪个状态public class ContextManager {    private State state;    public void doSomething(char i){        switch (i) {        case 'A':            state = new StateA();            break;        default:            state = new StateB();            break;        }        state.handle();    }}
//测试类public class Test {    public static void main(String[] args){        ContextManager cm = new ContextManager();        cm.doSomething('A');        cm.doSomething('C');    }}
//结果StateAStateB

3.总结:State模式的意图在于将与状态有关的处理逻辑分散到代表对象状态的各个类中。为处理状态之间的迁移,可以让中心对象(即状态管理者)保留对状态集的引用。或者,在状态迁移调用中,可以传递状态正在改变的中心对象。无论怎样管理状态迁移,都可以应用State模式将对象的不同状态用一个状态集合类集合来表示,并将操作分散在这个状态类的集合中,从而简化我们的代码。
4.参考:http://www.cnblogs.com/java-my-life/archive/2012/06/08/2538146.html

0 0
原创粉丝点击