基本的公共建筑问题。在较高的层次上,在设计pubsub时,我有时会面临两种体系结构之间的选择:
一些DB状态发生了变异,发布者通过pubsub通知该更改。但是它们在消息中包含了足够的信息,这样订阅者就不需要对DB进行查找了。假设订阅服务器拥有DB的缓存。它可以接收突变或新状态,并在不进行查找的情况下更新缓存。
,则该体系结构对此非常健壮,而#1则不然。
我的问题是,这两种类型的体系结构是否有一个共同的名称?谢谢!
发布于 2020-08-09 12:46:44
在“四人帮设计模式”一书中,发布/订阅称为观察者模式。在第298页,他们把这两个变体描述为推拉模型。
观察者模式的
实现通常让subject广播有关更改的附加信息。主题将此信息作为参数传递给Update。信息量可能差别很大。
在一个极端(我们称之为push模型),不管他们是否愿意,主体都会发送有关更改的详细信息。另一个极端是拉模型;主题只发送最少量的通知,观察者随后会显式地要求详细信息。
拉力模型强调被试对观察者的无知,而推送模型则假设被试对观察者的需求有所了解。push模型可能会降低观察者的可重用性,因为Subject类对观察者类的假设可能并不总是正确的。另一方面,拉模型可能效率低下,因为观察者类必须确定在没有来自主题的帮助下更改了什么。
https://stackoverflow.com/questions/63321138
复制相似问题