知识卡片
通知粒度权衡
内容
推模型把变化数据随通知发出,拉模型只通知变化再由观察者查询。前者方便但可能冗余,后者灵活但增加查询耦合。发散:事件载荷越大,越要警惕它变成隐式接口。
参考来源
- 位置:第5章《行为型模式》5.7节「Observer(观察者)」9.实现第6点「推/拉模型」(源文件:_epub-src/OEBPS/Text/part0087.xhtml)
- 结论依据:原文明确区分推模型(目标向观察者发送详细改变信息)和拉模型(目标只发最小通知,观察者再显式查询细节),并指出推模型方便但可能使观察者难以复用,拉模型灵活但效率可能较差,直接支持卡片对推模型方便但可能冗余、拉模型灵活但增加查询耦合的论述。
- 原始内容:"一个极端情况是,目标向观察者发送关于改变的详细信息,而不管它们需要与否。我们称之为推模型(push model)。另一个极端是拉模型(pull model),目标除最小通知外什么也不送出……推模型可能使得观察者相对难以复用……拉模型可能效率较差。"