无废话设计模式(14)结构型模式–状态模式

0-前言

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

1-实现

1-1、简单UML图

无废话设计模式(14)结构型模式–状态模式插图

 

 

1-2、代码实现

//1、状态抽象父类
abstract  class State
{
    public String StateName;
    public abstract void Handle(Contex contex);
}

//2-1、具体状态A
class StateStop extends  State
{
    public StateStop()
    {
        StateName = "停止状态";  //当前状态
    }

    @Override
    public void Handle(Contex contex)
    {
        contex.setState(new StateStart() ); //设置下一个状态
    }
}

//2-2、具体状态B
class StateStart extends  State
{
    public StateStart()
    {
        StateName = "开动状态"; //当前撞他
    }

    @Override
    public void Handle(Contex contex)
    {
        contex.setState(new StateStop()); //设置下一个状态
    }
}

//3、上下文类
class  Contex
{
    private  State state;
    public  Contex( State _state)
    {
        this.state = _state;
    }

    //1、设置状态
    public  void setState(State st)
    {
        System.out.println("************当前状态为:"+state.StateName);
        this.state = st;
        System.out.println("状态变更为:"+state.StateName);
    }

    //2、执行方法
    public void Request()
    {
        state.Handle(this);
    }

 

客户端:

        Contex ct = new Contex(new StateStart());
        ct.Request();
        ct.Request();
        ct.Request();

 

运行结果:

无废话设计模式(14)结构型模式–状态模式插图(1)

 

 

2-应用场景简单总结

1、当对象的行为取决于它的状态,且必须在运行时根据状态来改变自己的行为时;

2、当一个操作对象含大量多分支条件语句,且这些分支依赖该对象的状态时;

本站资源均源自网络,若涉及您的版权、知识产权或其他利益,请附上版权证明邮件告知。收到您的邮件后,我们将在72小时内删除。
若下载资源地址错误或链接跳转错误请联系站长。站长q:770044133。

» 无废话设计模式(14)结构型模式–状态模式

发表评论

免登录下载网,提供全网最优质的资源集合!