天天看点

设计模式利剑20--状态模式

定      义:当一个对象内在状态改变时允许其改变行文,这个对象看起来像改变了其类

优      点:

              1、结构清晰,避免了过多的switch case,if else

              2、遵循设计原则,每个状态都是一个子类

              3、封装性非常好

缺      点:子类会过多,也就是类膨胀

应用场景:

            1、行为随状态改变而改变的场景

            2、条件、分支判断语句的替代者

应用案例:

           先来看看实际的状态模式UML图:

           Status:抽象状态角色,接口或抽象类,负责对象状态定义,并且封装环境角色以实现状态切换

             ConcreteState:具体状态角色,每一个具体状态必须完成两个职责,本状态的行为管理以及趋向状态处理,通俗的说就是本状态下要做的事情以及本状态如何过渡到其他状态

             Context:环境角色,环境角色有两个不成文的约束,1、把状态独享声明为静态常量,有几个状态对象就声明几个静态常量

继续阅读