设计模式之状态模式

    状态行为模式属于设计模式中的行为模式的分类,行为模式一般指会涉及到算法以及对象间的职责分配。行为模式不但描述对象或类的模式,还描述其中的通信模式。

 
    行为模式通常使用对象间的复合而不是继承来完成对象功能的增强。
 
    下面为了引入状态模式(state),首先设想一种场景:
 
     还是拿领导说事,下属观察领导有三种不同的状态,分别是happy、bad以及normal,此时下属向领导请示根据领导不同的状态会收到不同的回应。
 
    如果master在happy状态,收到request时会回应:agree
 
    如果是在bad状态,收到request时会回应:out
 
     如果是在normal状态,收到request的回应是:discuss
 
    也就是说领导的不同反应依赖其当时的状态,那么我们如何来实现上面的场景呢?通常来讲,我们可以使用IF语句,if..if,这样当然可以,但IF语句最大的问题就是在复杂逻辑情况下会导致其极具膨胀从而降低其可维护性。
 
    我们观察,领导的反应依赖于状态,因此为何不将状态和行为捆绑,该场景的模拟直接可以简化为对经理状态的管理,这样既可以降低IF语句的复杂度,又可以引用状态管理的逻辑,其状态的管理,既可以在逻辑驱动部分实现,也可以在具体的状态间实现,从而实现了状态的灵活迁移。
 
    从GOF上找出类图来说明一下:
 
    
 
    从上图可见,行为被委托给了状态,而该状态是STATE接口的具体实现。
 
    GOF中对state模式还有进一步的说明,如状态管理,状态的初始化声明等,这些在我们具体应用的时候应该会有所取舍,这里就不做赘述了。

 

原文地址:https://www.cnblogs.com/jiyuqi/p/4503495.html