Posts

观察者模式

观察者模式,名词整挺玄,本质上就是个对象数组。

往数组里添加对象引用被称为:订阅/注册。

遍历数组里的对象进行方法调用被称为:发布/通知。

可能让人迷惑的事情是,订阅和发布这两件事发生在不同的时机,而且发布的时候使用的需要是执行订阅的那个实例(不然白登记了)。

邮件发送的例子

邮件发送可以认为是一种观察者模式:

编辑的阶段 AddRecipient 只是往收件人数组里登记引用;点击发送的那一刻才开始遍历数组逐个投递。两个时机相隔很远,靠的就是那张一直被持有的联系人列表——发布时遍历的也必须是持有它的那个实例。

ref