第13章行为型模式观察者模式精选PPT.ppt
第13章行为型模式观察者模式第1页,此课件共28页哦2 2行为型模式行为型模式职责链模式(职责链模式(chain of responsibility)命令模式(命令模式(command)解释器模式(解释器模式(interpreter)迭代器模式(迭代器模式(iterator)中介者模式(中介者模式(mediator)备忘录模式(备忘录模式(memento)观察者模式(观察者模式(observer)状态模式(状态模式(state)策略模式(策略模式(strategy)模板方法模式(模板方法模式(temple method)访问者模式(访问者模式(visitor)第2页,此课件共28页哦3观察者模式观察者模式(Observer)第3页,此课件共28页哦概述概述在在软软件件构构建建过过程程中中,我我们们需需要要为为某某些些对对象象建建立立一一种种“通通知知依依赖赖关关系系”:当当一一个个对对象象(目目标标对对象象)的的状状态态发发生生改改变变,所所有有的的依依赖赖对对象象(观观察察者者对对象象)都都将将得得到到通通知知。如如果果这这样样的的依依赖赖关关系系过过于于紧紧密密,将将使使软软件件不不能能很很好好地地抵抵御御变变化化。使使用用面面向向对对象象技技术术,可可以以将将这这种种依依赖赖关关系系弱弱化化,并并形形成成一一种种稳稳定定的的依依赖赖关关系系。从从而而实实现现软软件体系结构的松耦合。件体系结构的松耦合。4 4第4页,此课件共28页哦5 5观察者模式观察者模式意图意图意意图图:定定义义对对象象间间的的一一种种一一对对多多的的依依赖赖关关系系,当当一一个个对对象象的的状状态态发发生生改改变变时时,所所有有依依赖赖于它的对象都得到通知并被自动更新。于它的对象都得到通知并被自动更新。第5页,此课件共28页哦6 6观察者模式观察者模式结构结构第6页,此课件共28页哦7 7观察者模式观察者模式参与者参与者 Subject接接口口:抽抽象象了了主主题题类类,这这样样将将来来不不管管是是什什么么主主题题只只要要实实现现这这个个接接口口就就可可以以发起主题活动。发起主题活动。Observer接接口口:抽抽象象了了观观察察者者类类,不不管管是是什什么么类类型型的的观观察察者者都都可可以以通通过过实实现现观观察察者接口来具有观察主题通知的功能。者接口来具有观察主题通知的功能。第7页,此课件共28页哦8 8观察者模式观察者模式参与者参与者 ConcreteSubject类类:实实现现了了主主题题抽抽象象,实实现现具具体体的的功功能能。对对应应我我们们上上边边的的 HappyBar类,用来维护和发起活动通知。类,用来维护和发起活动通知。ConreteObserver类类:实实现现了了观观察察者者的的抽抽象象,实实现现具具体体功功能能。对对应应我我们们上上边边的的QQMember类类,用用来来观观察察主主题题类类的的通通知知,并并更更新自身的状态。新自身的状态。第8页,此课件共28页哦生活中的例子生活中的例子9 9第9页,此课件共28页哦气象监测应用的概况气象监测应用的概况1010第10页,此课件共28页哦气象监测应用的概况气象监测应用的概况WeatherData对对象象知知道道如如何何跟跟物物理理气气象象站站联联系系,以以取取得得更更新新的的数数据据。WeatherData对对象象会会随随即即更更新新三三个个布布告告板板的的显显示示:目目前前状状况况、气气象象统统计计和和天天气气预预报。报。如如果果接接受受这这个个项项目目,我我们们的的工工作作就就是是建建立立一一个个应应用用,利利用用WeatherData对对象象取取得得数数据据,并并更更新新三三个个布布告告板:目前状况、气象统计和天气预报。板:目前状况、气象统计和天气预报。1111第11页,此课件共28页哦已有的已有的WeatherData类类1212第12页,此课件共28页哦开发什么呢?开发什么呢?1313第13页,此课件共28页哦一个错误的示范一个错误的示范1414第14页,此课件共28页哦Sharpen Your pencil1515第15页,此课件共28页哦认识观察者模式认识观察者模式1616第16页,此课件共28页哦认识观察者模式认识观察者模式1717第17页,此课件共28页哦定义观察者模式定义观察者模式观观察察者者模模式式:定定义义了了对对象象之之间间的的一一对对多多的的依依赖赖关关系系,当当一一个个对对象象的的状状态态发发生生改改变变时时,所所有有依赖于它的对象都会得到通知并被自动更新。依赖于它的对象都会得到通知并被自动更新。1818第18页,此课件共28页哦定义观察者模式定义观察者模式1919第19页,此课件共28页哦定义观察者模式:类图定义观察者模式:类图2020第20页,此课件共28页哦松耦合的威力松耦合的威力当当两两个个对对象象之之间间松松耦耦合合,它它们们依依然然可可以以交交互互,但但是不太清楚彼此的细节。是不太清楚彼此的细节。松松耦耦合合的的设设计计之之所所以以能能主主我我们们建建立立有有弹弹性性的的OO系系统统,能能够够更更好好应应对对变变化化,是是因因为为对对象象之之间间的互相依赖降至了最低限度。的互相依赖降至了最低限度。观观察察者者模模式式提提供供了了一一种种对对象象设设计计方方式式,让让主主题和观察者之间松耦合。题和观察者之间松耦合。2121第21页,此课件共28页哦设计气象站设计气象站2222第22页,此课件共28页哦实现气象站实现气象站2323第23页,此课件共28页哦在在WeatherData中实现主题接口中实现主题接口2424第24页,此课件共28页哦在在WeatherData中实现主题接口中实现主题接口2525第25页,此课件共28页哦建立布告板建立布告板2626第26页,此课件共28页哦启动气象站启动气象站建立一个测试程序建立一个测试程序2727第27页,此课件共28页哦启动气象站启动气象站运行程序运行程序2828第28页,此课件共28页哦