设计模式(20) 观察者模式

观察者模式是一种常见设计模式,用于实现一对多的通知机制。当一个对象状态改变时,所有依赖它的对象都会得到自动通知并更新。适用于对象状态变化需要通知其他对象,且对象数量可能增减的情况。推模式和拉模式是实现方式,前者目标对象提供更新信息,后者观察者自行获取。.NET中的事件机制也是观察者模式的一种形式。然而,过多的观察者可能导致通知耗时,测试和调试复杂,以及可能的内存泄漏问题。
摘要由CSDN通过智能技术生成

观察者模式是一种平时接触较多的模式。它主要用于一对多的通知发布机制,当一个对象发生改变时自动通知其他对象,其他对象便做出相应的反应,同时保证了被观察对象与观察对象之间没有直接的依赖。

GOF对观察者模式的描述为:
Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically…
— Design Patterns : Elements of Reusable Object-Oriented Software

观察者模式的适用场景

  • 当存在一类对象通知关系上依赖于另一类对象的时候,把它们进行抽象,确保两类对象的具体实现都可以相对独立的变化,但它们交互的接口保持稳定。
  • 一个类型状态变化时,需要通知的对象的数量不固定,会有增加或删除若干被通知对象的情况。
  • 需要让目标对象与被通知对象之间保持松散耦合的时间。

UML类图如下:
在这里插入图片描述

代码实例

public interface IObserver<T>
{
    void Update(SubjectBase<T> subject);
}

public abstract class SubjectBase<T>
{
    protected IList
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值