名称:观察者

观察者设计模式能够更便利的创建查看目标对象状态的对象,并且提供与核心对象非耦合的指定功能性。

问题与解决方案:

实际应用中一个观察这设计模式示例涉及缓存器的构建。针对每个新的博客发布,RSS源上都会出现RSS读者占用一个入口。对于编程新手来说,为了构建这样的RSS源,他们会首先创建一个在每个载入页面上查找顶部入口的脚本,随后在某个RSS文档中格式化其结果。如果采用这样的设计,那么高流量站点会受到损害。不过事实正好相反,编程人员应当构建静态的RSS文档,这些文档也包含有效期信息。后一种方式能够创建良好的、为RSS读者提供数据的可缓存系统。为了更新缓存的RSS资源,我们可以使用一个观察类。成功的博客发布应当向所有观察者通知其已完成。观察类会接受这个信息并创建新的RSS资源。接下来,缓存器会被更新。这样可以保持缓存器的内容是最新的,同时也减少了服务器的负载。此时,我们不必定期生成缓存器,即使没有变化,缓存器仍然只在观察到需要更新的情况时被更新。

UML:

Observer

代码示例: