Observer模式从生活中走进观察者模式•在日常生活中,常常会有这样的情形:当某件事情发生时,就应该通知所有的相关者
例如,如果我们的课程改变了时间和地点,就应该通知所有选了这门课程的同学
•在软件设计中,也有类似的问题:当一个对象的状态发生变化时,如何能够通知与其相关的所有其他对象,而不用修改该对象的代码
初析观察者模型在许多设计中,经常涉及到多个对象都对一个特殊对象中的数据变化感兴趣,而且这多个对象都希望跟踪那个特殊对象中的数据变化
例如:求职中心与求职者观察者模型的定义1、定义对象间的一种一对多的依赖关系,当一个对象的状态发生变化时,所有依赖于它的对象都得到通知并被自动更新
2、别名:依赖(Dependents);发布-订阅(Publish-Subscribe)
ObserverPattern(AnotherName:Dependents,Publish-Subscribe)Defineaone-to-manydependencybetweenobjectssothatwhenoneobjectchangesstate,allitsdependentsarenotifiedandupdatedautomatically
对概念的加深理解•观察者模式中有一个“主题”对象和若干“观察者”对象,主题和观察者之间是一对多的依赖关系
•当主题的状态发生变化时,所有观察者都得到通知
例如:求职中心为主题,求职者为观察者观察者模型设计的动机1、将一个系统分割成一系列相互协作的类有一个常见的副作用:需要维护相关对象的一致性
我们不希望为了维持一致性使各类紧密耦合,因为这样降低了它们的可重用性
2、观察者模式使得任意数目的观察者不必知道彼此的存在,且主题发生变化时可以得到主题的通知,而同步改变状态
是一种很轻松的耦合
具有很好的可重用性
设计模型的原则1、将不变部分与固定比便的部分相