欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    观察者模式.pdf

    • 资源ID:69626182       资源大小:246.37KB        全文页数:6页
    • 资源格式: PDF        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    观察者模式.pdf

    1 目录 1.观察者模式(Observer Pattern).2 2.命令模式(Observer Pattern).6 2 1.观察者模式(Observer Pattern)1.1.描述:模式的定义和简单的具体描述 观察者模式定义了对象之间一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖他的对象都得到通知并自动更新。观察者模式中关键的对象是目标(Subject)和观察着(observer)。一个目标可以有任意数目的依赖它的观察者。一旦目标的状态发生改变,所有的观察者都得到通知。作为对这个通知的响应,每个观察者都查询目标以使其状态与目标状态同步。1.2.类图:模式的类图以及类图中每个类的说明 Subject(目标):定义了 Suject 的接口,一般使用抽象类(C+)或者接口(JAVA)的方式实现。其中包含三个方法:Attach 方法用于加入 Observer,Dettach 的方法用于移除 Observer,Notify方法用于通知 Observer。Observer(观察者):3 定义了 Observer 的接口,与 Suject 类似,一般使用抽象类(C+)或者接口(JAVA)的方式实现。Update 方法用于更新 Observer 的显示。ConcreteSubject(具体目标):继承 Suject 抽象类(C+)或者实现了 Suject 接口(JAVA)的具体 Suject 类,负责保存注册的 Observer 以及在自身状态发生改变时通知 Observer 的具体实现。ConcreteObserver(具体观察者):继承 Observer 抽象类(C+)或者实现了 Observer 接口(JAVA)的具体 Observer类。保存所依赖的 Suject 对象的引用,并通过更新的方式保证自身的状态和所依赖的 Suject状态一致。1.3.实现演示代码:C+和 Java 都可以 简介:使用 Observer 模式实现以多种方式表示时间。4 Subject 抽象类 Observer 纯虚类 class Observer;class Subject public:virtual Subject();virtual void Attach(Observer *);virtual void Detach(Observer*);virtual void Notify();project:Subject();private:List _observer_list;void Subject:Attach(Observer*o)_observer_list.Append(o);void Subject:Detach(Observer*o)_observer_list.Remove(o);void Subject:Notify()List:iterator ite=_observer_list.begin(),ite_end=_observer_list.end();for(;ite!=ite_end;ite+)(*ite)-update(this);class Subject;class Observer public:virtual Observer();virtual void Update(Subject*)=0;project:Observer();5 保存时间信息的 ClockSuject 类。Tick 方法由一个内部的计时器每隔一段时间(比如 1s)进行调用。Tick 方法随后更新时钟信息并且调用 notify 通知调用者。接着定义使用两种不同格式定义时间的 Clock 类。SImpleClock 使用 24 小时制的方式(HH:MM:SS)显示时间,GuiClock 一种使用图形化时钟方式显示时间。SimpleClock 类 class ClockSuject:public Subject public:ClockSuject();virtual int getHour();virtual int getMin();virtual int getSec();void Tick();/call by a internal clock every second.Void ClockSuject:Tick()/update internal time-keeping state /this-update();class SimpleClock:public Observer public:SimpleClock(ClockSubject*cs):_cs(cs);virtual SimpleClock();virtual void Upate(Subject *);private:ClockSubject*_cs;void SimpleClock:Upate(Subject *s)if(_cs=s)printf(“%d:%d:%d”,_cs-getHour(),_cs-getMin(),_cs-getSec();6 GuiClock 类 1.4.目前存在的应用:举几个例子,目前在什么地方运用到了这个模式 Observer 的优点在于 Subject 和 Oberserver 的解耦合,是一种定向广播的更新模式,也是一种事件驱动的设计模式。Observer 模式在 JAVA 的图形实现(AWT,Swing)中都有非常重要的地位,其图形事件驱动的模式本质上也是一个 Observer Pattern 的应用。XML 解析中的 SAX 模式也使用了 Observer Pattern 来实现。首先注册一种类似回调函数(Observer),随后遇到某个 XML 标签或者获取其他信息时(Subject),进行调用并处理。MVC 的中也包含了一部分的 Observer Pattern 的实现。2.命令模式(Observer Pattern)一直把 23 个模都说明完毕,最后更新目录 class GuiClock:public Observer,public GUI public:GuiClock(ClockSubject*cs):_cs(cs);virtual GuiClock();virtual void Upate(Subject *);virtual void draw();/function to draw a clock;private:ClockSubject*_cs;void GuiClock:Upate(Subject *s)if(_cs=s)draw();

    注意事项

    本文(观察者模式.pdf)为本站会员(qwe****56)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开