zoukankan      html  css  js  c++  java
  • 无废话设计模式(14)行为型模式--状态模式

    0-前言

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

    1-实现

    1-1、简单UML图

    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();

    运行结果:

    2-应用场景简单总结

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

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

  • 相关阅读:
    博客搬到CSDN了,以后就老实的呆在这儿吧~~
    Android对px和dip进行尺寸转换的方法
    获取Java的32位MD5实现
    GDI+ Hello World
    WTL对话框添加背景图片
    WTL对话框添加背景图片
    WTL设置对话框背影色
    WTL设置对话框背影色
    使用CStatic显示图片(bmp、ico、png)
    WTL Picture Control显示图片
  • 原文地址:https://www.cnblogs.com/yanghj/p/13428203.html
Copyright © 2011-2022 走看看