处理对象的多种状态及其相互转换——状态模式(四)

    在有些情况下,多个环境对象可能需要共享同一个状态,如果希望在系统中实现多个环境对象共享一个或多个状态对象,那么需要将这些状态对象定义为环境类的静态成员对象。

    下面通过一个简单实例来说明如何实现共享状态:

    如果某系统要求两个开关对象要么都处于开的状态,要么都处于关的状态,在使用时它们的状态必须保持一致,开关可以由开转换到关,也可以由关转换到开。

    图5 开关及其状态设计结构图

    开关类Switch代码如下所示:

    两个具体状态类如下代码所示:

    编写如下客户端代码进行测试:

    输出结果如下: