设计模式-行为型软件设计模式(六)

来源:互联网 发布:c语言驱动写法 编辑:程序博客网 时间:2024/06/08 07:22

状态模式

介绍

状态模式将不同状态下的行为封装在不同的类中,每个类代表一个状态。
这里写图片描述
(1)Context:定义了与客户程序的接口,它保持了一个ConcreteState的代表现在状态的实例。
(2)State:定义了状态接口,它的各个子类封装了在各种不同状态下的行为。
(3)ConcreteState子类:封装了在各种不同状态下的行为。

示例

开关有开和关两种状态public class Context{    private Switch s,On,off;    public Context(Switch s)    {        this.s = s;        on = new On();        off = new Off();    }    ...可以设置当前的状态...}public abstract class Switch{    ...}public class On extends Switch{    ...}...

优点

(1)修改状态子类时,不需要修改Context代码
(2)在增加新的状态子类时,可能只修改少许代码。
(3)将状态与客户类分离。