版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
DesignPatterns观察者模式刘伟(Sunny)weiliu_china@126.com大纲观察者模式概述观察者模式的结构与实现观察者模式的应用实例观察者模式与.NET中的委托事件模型观察者模式与MVC观察者模式的优缺点与适用环境观察者模式概述交通信号灯与汽车示意图观察者模式概述分析交通信号灯观察目标汽车(汽车驾驶员)观察者一对多观察者模式概述分析软件系统:一个对象的状态或行为的变化将导致其他对象的状态或行为也发生改变,它们之间将产生联动观察者模式:定义了对象之间一种一对多的依赖关系,让一个对象的改变能够影响其他对象发生改变的对象称为观察目标,被通知的对象称为观察者一个观察目标可以对应多个观察者观察者模式概述观察者模式的定义对象行为型模式观察者模式:定义对象之间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象都得到通知并被自动更新。ObserverPattern:Defineaone-to-manydependencybetweenobjectssothatwhenoneobjectchangesstate,allitsdependentsarenotifiedandupdatedautomatically.观察者模式概述观察者模式的定义别名发布-订阅(Publish/Subscribe)模式模型-视图(Model/View)模式源-监听器(Source/Listener)模式从属者(Dependents)模式观察者模式的结构与实现观察者模式的结构观察者模式的结构与实现观察者模式的结构观察者模式包含以下4个角色:Subject(目标)ConcreteSubject(具体目标)Observer(观察者)ConcreteObserver(具体观察者)观察者模式的结构与实现观察者模式的实现典型的抽象目标类代码:usingSystem.CollectionabstractclassSubject{//定义一个观察者集合用于存储所有观察者对象protectedArrayListobservers=newArrayList();//声明抽象注册方法,用于向观察者集合中增加一个观察者
publicabstractvoidAttach(Observerobserver);//声明抽象注销方法,用于在观察者集合中删除一个观察者
publicabstractvoidDetach(Observerobserver);//声明抽象通知方法
publicabstractvoidNotify();}观察者模式的结构与实现观察者模式的实现典型的具体目标类代码:classConcreteSubject:Subject{ publicoverridevoidAttach(Observerobserver) { observers.Add(observer); }
publicoverridevoidDetach(Observerobserver) { observers.Remove(observer); }
//实现通知方法
publicoverridevoidNotify() {//遍历观察者集合,调用每一个观察者的响应方法
foreach(objectobsinobservers) { ((Observer)obs).Update(); } }}观察者模式的结构与实现观察者模式的实现典型的抽象观察者代码:interfaceObserver{ voidUpdate();}观察者模式的结构与实现观察者模式的实现典型的具体观察者代码:classConcreteObserver:Observer{//实现响应方法
publicvoidUpdate() { //具体更新代码
}}观察者模式的结构与实现观察者模式的实现说明:有时候在具体观察者类ConcreteObserver中需要使用到具体目标类ConcreteSubject中的状态(属性),会存在关联或依赖关系如果在具体层之间具有关联关系,系统的扩展性将受到一定的影响,增加新的具体目标类有时候需要修改原有观察者的代码,在一定程度上违背了开闭原则,但是如果原有观察者类无须关联新增的具体目标,则系统扩展性不受影响观察者模式的结构与实现观察者模式的实现典型的客户端代码片段:……Subjectsubject=newConcreteSubject();Observerobserver=newConcreteObserver();subject.Attach(observer);subject.Notify();……观察范者模目式的鸡应用边实例实例用说明在某多人联机对战游戏中,多个玩家可以加入同一战队组成联盟,当战队中的某一成员受到敌人攻击时将给所有其他盟友发送通知,盟友收到通知后将做出响应。现使用观察者模式设计并实现该过程,以实现战队成员之间的联动。观察乔者模奖式的赵应用询实例实例情分析轿及类棒图战队漫成员励之间访的联牧动过蛋程:联盟监成员宵受到桑攻击发送康通知咽给盟士友盟友让做出摘响应观察芝者模律式的丝式应用悦实例实例题分析签及类怪图多人彩联机皂对战思游戏推结构文图观察川者模谋式的终应用舟实例实例依代码(1伍)费Al送ly帖Co育nt街ro饮lC扒en补te处r:指撑挥部辈(战兰队控屿制中旬心)顾类,指充当互抽象灶目标柄类(2继)钻Co烛nc害re谁te荒Al尤ly各Co榨nt圾ro待lC瞒en懂te废r:具他体指峰挥部隔类,撒充当用具体疼目标弊类(3汁)希IO揭bs驰er朵ve峡r:抽餐象观峡察者饼类(4绢)帆Pl渐ay理er:战乳队成虹员类泡,充枪当具抚体观心察者奏类(5吼)描Pr蛮og讨ra块m:客劈燕户端渠测试某类演示……参考是代码(D蔬es拒ig傲nP顶at毒te匠rn苗\O雄bs关er途ve秧rS秤am劫pl衣e)观察柏者模扰式的仪应用茧实例结果赠及分状析两次席对象肢之间拳的联醒动,躺触发棵链:Pl称ay度er烫.B喊eA药tt吓ac节ke赤d(昌)Al监ly院Co天nt碰ro繁lC壮en勉te离r.感No李ti建fy欲Ob胳se瞧rv芽er去()Pl弃ay拒er议.H鸟el黄p(向)观察浸者模受式与.N蔽ET中的嗓委托欣事件势模型分析事件何源对锋象充蓬当观型察目寨标角薄色,委托简对象畜充当念抽象漆观察丝式者角扛色,事件潮处理尼对象辟充当粪具体伏观察掏者角副色如果涂事件秆源对羞象的田某个抹事件嘉触发储,则登调用篇事件另处理岸对象娱中的岛事件互处理泛程序黎来对乔事件蓬进行丝式处理观察薯者模匪式与.N救ET中的膝委托忙事件额模型分析C#事件伙注册蛮方法贝语法炮:ev钉en耳tS栗ou链rc雨e表示事件淡源,so近me盆Ev它en桃t表示颤定义和在事汪件源扬中的事件,So篇me哪Ev锤en吉tH捞an变dl邮er表示尤用于止处理题事件帆的委托,so阅me盒Me挂th悬od表示乞与委柜托So保me规Ev愈en骨tH专an锐dl荷er具有迁相同食函数套签名生的事件皮处理凳方法只需斯要修桶改so那me谨Me克th浊od,即制可实阶现相同窝的事车件对乎应不导同的借事件庙处理班程序.N续ET中的戒事件折处理赌模型俱是观示察者妇模式垮的一拍种变斥形,议它与援观察众者模揭式的篮实现己原理恼本质透上是照一致输的eventSource.someEvent+=newSomeEventHandler(someMethod);观察究者模液式与.N柱ET中的链委托限事件考模型实例喂:自烈定义鸦事件(1僻)乱Ev盗en斑tT膝es恼t:包泻含委诸托和唯事件前的类(2海)嗽Pr台og谋ra诵m:客治户端召测试角类演示……参考芦代码(D浊es蒙ig沸nP亩at迹te包rn诞\O嫩bs屈er滤ve霉rE替xt巡寿en乌d)观察带者模颜式与MV绪CMV发C(辅Mo胃de撑l-册Vi挂ew址-C拦on触tr箱ol懂le削r)架构模型(M协od雅el忆),视图(V砌ie巾w)和控制卸器(C德on抱tr竿ol拖le喘r)模型可对给应于效观察想者模啄式中深的观察营目标,而视图对应贱于观察纽奉者,控制蚕器可充丈当两浆者之披间的中介茫者当模型萄层的数桂据发服生改藏变时她,视图刺层将自浸动改炊变其键显示舱内容MV涉C结构衬示意夺图观察呢者模箭式的吩优缺为点与扛适用商环境模式远优点可以实现只表示挂层和排数据则逻辑栽层的蹈分离在观兽察目肯标和楚观察坚者之舒间建立姥一个姨抽象劈燕的耦抖合支持广播璃通信,简化从了一愿对多蹲系统疑设计饥的难裙度符合痒开闭旁原则,增竭加新滴的具热体观耻察者心无须缸修改粒原有本系统猜代码迟,在控具体险观察勾者与去观察锣目标凡之间滑不存短在关缓联关绕系的预情况割下,安增加单新的弓观察纹目标床也很提方便观察穷者模嫩式的则优缺任点与蝴适用渴环境模式穗缺点将所右有的控观察将者都撒通知浇到会花费莫很多持时间如果湿存在循环融依赖时可能被导致央系统肃崩溃没有葬相应原的机倒制让劈燕观察毛者知排道所含观察幼的目皇标对伯象是乡丰怎么声发生律变化件的,而挺只是恋知道怀观察不目标糊发生毯了变少化观察请者模钳式的诸优缺惊点与掀适用妇环境模式互适用孟环境一个舰抽象询模型陈有两孔个方非面,妇
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 停车场扩建钢结构隔层施工合同
- 员工反馈与沟通渠道
- 物流运输可靠性规范
- 水库清淤治理施工合同
- 建筑门窗施工合同:教育设施建设
- 户外用品质量奖评定流程
- 团队协作升级计件奖罚新实践
- 旧城改造工程合同进度跟踪
- 农业计量管理准则
- 云云云金融服务期协议
- GB∕T 2980-2018 工程机械轮胎规格、尺寸、气压与负荷
- 总承包管理规划及措施
- 乐器设备供货项目实施方案及售后服务方案
- 宇视存储主机VX1600开局指导书(包括VX1648)全解
- 蓝色预防养老诈骗宣传教育PPT模板
- 酒店生产安全事故综合应急预案
- 第一讲孕期常见身体不适的缓解方法
- 化工生产安全设施类别介绍(1)
- 姜文导演风格分析.ppt
- 《小学生常见心理问题及辅导策略的实践研究》立项申报书
- 换热站验收资料
评论
0/150
提交评论