软件设计中的观察者模式:原理、应用与实现
1. 中介者模式概述
在软件设计里,PaletteViewController、ThumbnailViewController 及其工具栏按钮遵循相同程序实现关联。此时,所有与视图过渡逻辑相关的内容都已就位,而且无需在每个视图控制器中编写一行代码,整个逻辑由 CoordinatingController 中的一个方法管理。由于 CoordinatingController 被实现为单例,运行时用 .xib 文件创建的实例,在应用程序的整个生命周期内实际上是同一个实例。
中介者模式在应用程序行为分散于不同对象且相互依赖的情况下非常有用,但要注意避免使中介者类变得庞大且难以维护。若出现这种情况,可考虑使用其他设计模式来拆分这个庞大的类,并且可以创造性地混合搭配不同的设计模式来解决同一问题。
2. 观察者模式引入
观察者模式就像空中交通管制系统。空中交通需要一个集中的空中交通管制,许多操作员在控制塔内通过雷达屏幕确保不会发生空中碰撞。同时,飞行员需要了解周围的空中交通情况,他们可以通过收音机调至特定频道来监听。交通管制员向观察该频道的飞行员广播预防措施和警告时,飞行员可以通过特定行动确认消息。在这个模型中,任何人都能知道自己观察的交通管制情况,但反之则不然,而且任何人都可以随时加入或退出,不会干扰他人。
在面向对象的软件设计中,我们引入了这种思想,用于解耦具有不同行为的对象,或者用其他不同的行为扩展对象的行为。不同对象可以协同工作,并且可以在其他地方复用,这就是观察者模式。
3. 观察者模式概念
观察者模式也称为发布 - 订阅模式,类似于杂志订阅。当你向杂志