状态(State)模式

名称:

    状态模式(State Pattern)

问题:

    The State pattern allows an object to alter its behavior when its internal state changes. The object appears to change its class.   

解决方案:

    

1、 模式的参与者

    1、Context

    -定义客户感兴趣的接口。

    2、State

    -定义一个接口以封装与Context的一个特定状态相关的行为。

    3、ConcreteState subclasses

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

2.实现方式

class Context
{
    private State state;
   
    public Context()
    {
        this.state=new ConcreteStateA();
    }
   
    public void setState(State state)
    {
        this.state=state;
    }

    public State getState()
    {
        return state;
    }
   
    public void Handle()
    {
        state.Handle(this);
    }
}
abstract class State
{
    public abstract void Handle(Context context);
}
class ConcreteStateA extends State
{
    public void Handle(Context context)
    {
        context.setState(new ConcreteStateB());
    }
}
class ConcreteStateB extends State
{
    public void Handle(Context context)
    {
        context.setState(new ConcreteStateA());
    }
}

参考资料

《设计模式:可复用面向对象软件的基础》

猜你喜欢

转载自www.cnblogs.com/diameter/p/13210503.html