观察者模式—对象间的联动
什么是观察者模式呢?
首先,看一个故事
“红灯停,绿灯行”,在日常生活中,
交通信号灯装点着我们的城市,指挥着日益拥挤的城市交 通。
当红灯亮起,来往的汽车将停止;
而绿灯亮起,汽车可以继续前行。
在这个过程中,交 通信号灯是汽车(更准确地说应该是汽车驾驶员)的观察目标,
而汽车是观察者。随着交通 信号灯的变化
,汽车的行为也将随之而变化,一盏交通信号灯可以指挥多辆汽车。
同样的,在软件系统中,有些对象之间也存在类似交通信号灯和汽车之间的关系,
一个对象的状态或 行为的变化将导致其他对象的状态或行为也发生改变,
它们之间将产生联动,正所谓“触一而牵百发”。为
了更好地描述对象之间存在的这种一对多(包括一对一)的联动,
观察者模式应 运而生,它定义了对象之间一种一对多的依赖关系,
让一个对象的改变能够影响其他对象。
观察者模式是设计模式中的"超级模式",是使用频率最高的设计模式之一,
它用于建立一种对象与对象之间的依赖关系,
一个对象发生改变时将自动通知其他对象,其他对象将相应作出反应。
在观察者模式中,发 生改变的对象称为观察目标,
而被通知的对象称为观察者,一个观察目标可以对应多个观察 者,
而且这些观察者之间可以没有任何相互联系,
可以根据需要增加和删除观察者,使得系 统更易于扩展。
角色:
Subject(目标):目标又称为主题,它是指被