C#设计模式-观察者模式.ppt

C#设计模式-观察者模式.ppt

ID:38831653

大小:3.43 MB

页数:28页

时间:2019-06-20

C#设计模式-观察者模式.ppt_第1页
C#设计模式-观察者模式.ppt_第2页
C#设计模式-观察者模式.ppt_第3页
C#设计模式-观察者模式.ppt_第4页
C#设计模式-观察者模式.ppt_第5页
资源描述:

《C#设计模式-观察者模式.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、DesignPatterns观察者模式刘伟(Sunny)weiliu_china@126.com大纲观察者模式概述观察者模式的结构与实现观察者模式的应用实例观察者模式与.NET中的委托事件模型观察者模式与MVC观察者模式的优缺点与适用环境观察者模式概述交通信号灯与汽车示意图观察者模式概述分析交通信号灯观察目标汽车(汽车驾驶员)观察者一对多观察者模式概述分析软件系统:一个对象的状态或行为的变化将导致其他对象的状态或行为也发生改变,它们之间将产生联动观察者模式:定义了对象之间一种一对多的依赖关系,让一个对象的改变能够影响其他对象发生改变的对象称为观察目标,被通知的对象称为观察者

2、一个观察目标可以对应多个观察者观察者模式概述观察者模式的定义对象行为型模式观察者模式:定义对象之间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象都得到通知并被自动更新。ObserverPattern:Defineaone-to-manydependencybetweenobjectssothatwhenoneobjectchangesstate,allitsdependentsarenotifiedandupdatedautomatically.观察者模式概述观察者模式的定义别名发布-订阅(Publish/Subscribe)模式模型-视图(Model/Vie

3、w)模式源-监听器(Source/Listener)模式从属者(Dependents)模式观察者模式的结构与实现观察者模式的结构观察者模式的结构与实现观察者模式的结构观察者模式包含以下4个角色:Subject(目标)ConcreteSubject(具体目标)Observer(观察者)ConcreteObserver(具体观察者)观察者模式的结构与实现观察者模式的实现典型的抽象目标类代码:usingSystem.CollectionabstractclassSubject{//定义一个观察者集合用于存储所有观察者对象protectedArrayListobservers=newArr

4、ayList();//声明抽象注册方法,用于向观察者集合中增加一个观察者publicabstractvoidAttach(Observerobserver);//声明抽象注销方法,用于在观察者集合中删除一个观察者publicabstractvoidDetach(Observerobserver);//声明抽象通知方法publicabstractvoidNotify();}观察者模式的结构与实现观察者模式的实现典型的具体目标类代码:classConcreteSubject:Subject{publicoverridevoidAttach(Observerobserver){obser

5、vers.Add(observer);}publicoverridevoidDetach(Observerobserver){observers.Remove(observer);}//实现通知方法publicoverridevoidNotify(){//遍历观察者集合,调用每一个观察者的响应方法foreach(objectobsinobservers){((Observer)obs).Update();}}}观察者模式的结构与实现观察者模式的实现典型的抽象观察者代码:interfaceObserver{voidUpdate();}观察者模式的结构与实现观察者模式的实现典型的具体观

6、察者代码:classConcreteObserver:Observer{//实现响应方法publicvoidUpdate(){//具体更新代码}}观察者模式的结构与实现观察者模式的实现说明:有时候在具体观察者类ConcreteObserver中需要使用到具体目标类ConcreteSubject中的状态(属性),会存在关联或依赖关系如果在具体层之间具有关联关系,系统的扩展性将受到一定的影响,增加新的具体目标类有时候需要修改原有观察者的代码,在一定程度上违背了开闭原则,但是如果原有观察者类无须关联新增的具体目标,则系统扩展性不受影响观察者模式的结构与实现观察者模式的实现典型的客户端代码

7、片段:……Subjectsubject=newConcreteSubject();Observerobserver=newConcreteObserver();subject.Attach(observer);subject.Notify();……观察者模式的应用实例实例说明在某多人联机对战游戏中,多个玩家可以加入同一战队组成联盟,当战队中的某一成员受到敌人攻击时将给所有其他盟友发送通知,盟友收到通知后将做出响应。现使用观察者模式设计并实现该过程,以实现战队成员之间的

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。