• 状态模式 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所要组合的策略对象时那一个。

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

  • 相关阅读:
    11 dubbo monitor
    svn ignore忽略文件
    Java Core Dump分析过程
    10 其他
    9 jenkins
    8 jenkins
    7 nhorizons项目结构
    6 发布个人项目到私服
    5 jenkins使用gitee
    4 Linux安装git
  • 原文地址:https://www.cnblogs.com/windlaughing/p/2989258.html
Copyright © 2020-2023  润新知