观察者模式 VS 发布/订阅(广播)

观察者模式和发布/订阅模式在概念上有区别。观察者模式中,观察者可以动态订阅或取消订阅通知,一个可观察对象能向多个观察者广播消息。在.NET中,标准事件实现了这一模式。而发布/订阅通常意味着更匿名的事件发布,可能通过中间人(如消息队列)来实现,使得事件发布者和订阅者之间互不知晓。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Observer, or Observable/Observer:

A design pattern by which an object is imbued with the ability to notify others of specific events - typically done using actual events, which are kind of like slots in the object with the shape of a specific function/method.  The observable is the one who provides notifications, and the observer receives those notifications.  In .net, the observable can expose an event and the observer subscribes to that event with an "event handler"shaped hook.  No assumptions are made about the specific mechanism which notifications occur, nor about the number of observers one observable can notify.

Pub/Sub:

Another name (perhaps with more "broadcast" semantics) of the Observable/Observer pattern, which usually implies a more "dynamic" flavor - observers can subscribe or unsubscribe to notifications and one observable can "shout out" to multiple observers. In .net, one can use the standard events for this, since events are a form of MulticastDelegate, and so can support delivery of events to multiple subscribers, and also support unsubscription. Pub/sub has a slightly different meaning in certain contexts, usually involving more "anonymity" between event and eventer, which can be facilitated by any number of abstractions, usually involving some "middle man" (such as a message queue) who knows all parties, but the individual parties don't know about each other.


出处:http://stackoverflow.com/questions/15594905/difference-between-observer-pub-sub-and-data-binding

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值