您的位置:首页 > 编程语言 > Java开发

JAVA 设计模式 状态模式

2017-09-01 09:52 302 查看
用途

状态模式 (State)

当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。
状态模式是一种行为型模式

 
 

结构

[align=center][/align]

图-状态模式结构图
State : 定义一个接口以封装与 Context 的一个特定状态相关的行为。

abstract class State {

    public abstract void Handle(Context context);

}

ConcreteState : 每一个子类实现一个与 Context 的一个状态相关的行为。

class ConcreteStateA extends State {

    @Override

    public void Handle(Context context) {

        context.SetState(new ConcreteStateB());

    }

}

class ConcreteStateB extends State {

    @Override

    public void Handle(Context context) {

        context.SetState(new ConcreteStateA());

    }

}

Context : 维护一个 ConcreteState 子类的实例,这个实例定义当前的状态。

class Context {

    private State state;

    public Context(State state) {

        this.state = state;

    }

    

    public void SetState(State state) {

        this.state = state;

        System.out.println("当前状态:" + state.getClass().getName());

    }

    public State GetState() {

        return state;

    }

    

    public void Request() {

        state.Handle(this);

    }

}

测试代码

public class StatePattern {

    public static void main(String[] args) {

        Context c = new Context(new ConcreteStateA());

        c.Request();

        c.Request();

    }

}

运行结果

当前状态:ConcreteStateB

当前状态:ConcreteStateA

[b]推荐[/b]
本文属于 JAVA设计模式系列

[b]参考资料[/b]
《大话设计模式》

《HeadFirst设计模式》 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: