设计模式——观察者模式

时间:2016-04-19 17:00
地点:新大楼 906

定义

观察者模式、发布-订阅模式、模型-视图模式
状态改变、主动通知
一对多的关系
一般多功能点联动的地方都可以使用该模式
猫叫、老鼠跑、主人醒
上课铃响、学生进教室、老师开始上课
客户下单成功、给手机发送短信、APP推送通知
点击提交按钮、后台保存数据

动机

要点

(1)被观察者(主题)
可以通过接口或抽象类提供
(2)观察者

  • 观察者不是直接调用(迪米特法则)
  • 观察者将自己注册到被观察者的容器中时,被观察者不应该过问观察者的类型

实例

(1)发报纸
(2)客人付款成功后:
①给客人发送支付成功的通知短信
②给供应商发送预订传真
③给预定中心发送做单提醒
④给财务中心发送做单提醒
......

总结

优点:解除了被观察者和观察者的耦合,各自的变化不影响对方
缺点:一个类想成为观察者必须要实现抽象类观察者接口,如果类无法修改,就没办法成为观察者,依赖关系并未完全解除。

模式引申

事件委托的实现
委托的定义:可看做是对方法的抽象,是方法的类
委托实例是可以多播的
利用委托可以解除接口的依赖

C#中Action和Func的区别:Func可以定义返回参数的类型

加不加event修饰符的区别:不加的话可以直接使用,加的话有权限的才能调用

附件

源码

你可能感兴趣的:(设计模式——观察者模式)