zoukankan      html  css  js  c++  java
  • 状态模式 The State Pattern

    状态模式
         允许对象在内部状态改变时,改变它的行为,对象看起来好像修改了它的类。
         (因为不同的状态,对用一个操作,有不同的处理)
     
    1、将状态封装成独立的类,每个状态下的行为都放在各自状态的类中。
    2、状态机建模:定义一个状态集合;创建用一个变量持有当前状态对象;当动作被调用时,它就被委托给当前的状态对象。
     
     
    类图:

    1、Context(上下文)持有一些内部状态,只要有人调用Context的request() 方法,它就会被委托到状态来处理。
    2、State 接口定义了一个所有状态的共同接口,任何状态都实现这个接口,以便状态之间可以相互替换。
    3、每个ConcreteState都提供了它自己对于请求的实现。
     
     
    不使用状态模式 与 使用状态模式的对比
    1、不使用状态模式 
    代码中有众多条件语句,根据不同的状态选择不同的行为
    if ( state1 ) { ... }
    else if ( state2 ) { ... }
    else if ( state3 ) { ... }
    else { ... }
    2、使用状态模式
    状态的转换可以由State类或Context类控制
    state.handle();
     
     
    状态模式与策略模式对比
    状态模式:用户不会直接和状态交互,当前状态自行在状态集合中游走
    策略模式:用户通常主动指定Context所要组合的策略对象时那一个。

    (转载请注明出处 ^.^)

  • 相关阅读:
    Web.config配置详解
    vs2010下创建webservice
    WinForm如何调用Web Service
    Android动画的两种使用方式。
    ES6介绍
    django批量form表单处理
    django生命周期示意图
    django中的构造字典(二级菜单,评论树,购物车)
    django中介模型,CBV模型,及logging日志配制
    django中csrftoken跨站请求伪造的几种方式
  • 原文地址:https://www.cnblogs.com/windlaughing/p/2989258.html
Copyright © 2011-2022 走看看