设计模式-观察者模式

观察者模式

在软件系统中,一个对象的状态变化可能会引起其他对象的状态变化或某种行为。
观察者模式定义了一种一对多的依赖关系,使得每一个对象状态改变时,其相关依赖对象均得到通知并自动更新。
观察者模式类图从理解上来说,观察者模式中主要存在两种角色(不考虑抽象),Observer作为观察者,观察Subject的状态变化,当观察到目标变化时,做出动作。
从代码实现上来说,Subject记录要通知的对象,当自身状态发生变化时,遍历要通知的对象列表,并调用其约定的接口,实现各个对象的动作。
从抽象上来说,Subject和Observer都依赖多态,通过基类的接口实现状态获取、状态改变后的动作等。

应用场景

MVC模式

MVC模式作为一种架构,具体包含model\view\control三种角色,model作为观察目标,view作为观察者,在model发生变化时,通知view做出改变

C#中的事件委托

C#中委托是一种引用方法的类型,可以类比成Subject,委托的具体实例是具体的函数,可以类比观察者。

总结

观察者模式的应用非常广泛,应用频率很高,主要优点有:

  • 符合开闭原则、依赖倒转原则,松耦合
  • 定义了一种消息传递机制
  • 支持广播通信,简化设计难度

主要缺点有:

  • 观察者过多,比较耗时
  • 可能会造成循环调用
  • 观察者不知道目标是怎么变化的,仅知道其变化了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值