说明:(定义)当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。该模式适用于那些复杂的条件不一样,执行不一样的场景,当然简单的情况,直接用if/else处理就可以了。
需求:员工加班,不同的时间,写程序的效率不一样。
解决方式:
a. 定义一个状态抽象类并定义一个处理方法;
b. 根据不同状态,定义不同状态具体类;
c. 定义一个上下文类,提供状态类的get/set方法,定义一个状态不同,执行不同状态具体类方法的方法;
d. 客户端实例化上下文类实例C,初始化一个状态具体类实例A,将实例Aset给上下文实例C,执行C的changeState方法。
需求变更:领导说晚上21:00以后强制下班。
解决方式:
新增一个状态强制下班类
类图: