首页 > 其他 > 详细

状态(State)模式

时间:2020-06-29 21:54:49      阅读:53      评论:0      收藏:0      [点我收藏+]

名称:

    状态模式(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());
    }
}

 

参考资料

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

 

状态(State)模式

原文:https://www.cnblogs.com/diameter/p/13210503.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!