zoukankan      html  css  js  c++  java
  • 不一样的状态模式(设计模式十七)

    前言

    什么是状态模式呢?其实这个东西和策略和命令都很像,可以说其实他们是一种思想的不同表达形式。

    先贴一下:
    在状态模式(State Pattern)中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。

    正文

    public class context
    {
       public string state="1";
       public void doAction(){
           if(state==1)
           {
             //启动
           }else if(state==2)
           {
             //停止
           }
           //...
      }
    }
    

    发现了问题就是很多if else 多一个状态又得改一次,也就是说context 不稳定。

    那么就需要把state 抽离出去,和策略模式不同的是,抽离出去的不仅仅是state,而是整个action。

    这其实就是有点像命令模式,命令模式解耦的是请求者,而状态模式解耦的是执行者。

    public abstract class state
    {
       public abstract void doAction(){
    }
    public class StopActionState:state{
        public Context context;
        public StopActionState(Context context)
        {
           this.context=context
        }
        public void doAction(){
            //...
            context.setState(this);
        }
    }
    
    public class StartActionState:state{
        public Context context;
        public StopActionState(Context context)
        {
           this.context=context
        }
        public void doAction(){
            //...
           context.setState(this);
        }
    }
    public class Context
    {
       public State state;
       public Context()
       {
           
       }
       public void setState(State state)
       {
         this.state=state;
       }
       public State getState()
       {
          return state;
       }
    }
    
    public void main()
    {
       Context context=new Context();
       //开启
       StartActionState startActionState=new StartActionState (context);
       //暂停
       StopActionState startActionState=new StopActionState (context);
    }
    
  • 相关阅读:
    eclipse工具
    Tag
    JSP模版
    Eclipse断点调试
    JavaBean
    验证码设计
    在IE中提示404错误
    序列化与反序列化
    文件编码问题
    强类型,弱类型和推断类型
  • 原文地址:https://www.cnblogs.com/aoximin/p/13640375.html
Copyright © 2011-2022 走看看