- 1、本文档共198页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第七章 行为型设计模式;目录
【7.1】 模板方法模式(Template method)
7.2 观察者模式(Oberserver) 【实验】
【7.3】 迭代子模式(Iterator)
7.4 责任链模式(Chain of Responsibility)【实验】
7.5 备忘录模式(Memento) 【实验】
7.6 命令模式 (Command) 【实验】
7.7 状态模式(State)
【7.8】 访问者模式(Visitor)
【7.9】 中介者模式(Mediator)
【7.10】 策略模式(Strategy) ;7.1 模板方法(Template Method)模式;7.1.1 模板方法模式的由来;7.1.1 模板方法模式的由来;7.1.1 模板方法模式的由来;;;7.1.1 模板方法模式的由来;7.1.1 模板方法模式的由来;7.1.2 模板方法模式的意图和适用性;7.1.2 模板方法模式的意图和适用性;模板方法模式中的两种方法;摸板方法(Template Method)模式小结;7.1.3 模板方法模式的结构和参与者;7.1.3 模板方法模式的结构和参与者;教材上的应用举例;7.1.4 应用举例;7.1.4 应用举例;7.1.4 应用举例;7.1.4 应用举???;实用例子;7.1.5 效果分析;关于继承的讨论;7.2 观察者模式(Oberserver) 【实验】 ;7.2.1 观察者模式的由来;7.2.1 观察者模式的由来;7.2.1 观察者模式的由来;7.2.2 观察者模式的意图和适用性
模式的意图
定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 ;7.2.2 观察者模式的意图和适用性;7.2.3 观察者模式的结构和参与者
观察者模式结构图
;7.2.3 观察者模式的结构和参与者
Observer
Subject(目标)
目标知道它的观察者。可以有任意多个观察者观察同一个目标。
提供注册和删除观察者对象的接口。
Observer(观察者)
为那些在目标发生改变时需获得通知的对象定义一个更新接口。
Concrete Subject(具体目标)
将有关状态存入各Concrete Observer对象。
当它的状态发生改变时, 向它的各个观察者发出通知。
Concrete Observer(具体观察者)
维护一个指向Concrete Subject对象的引用。
存储有关状态,这些状态应与目标的状态保持一致。
实现Observer的更新接口以使自身状态与目标的状态保持一致。;7.2.4 应用举例
例如:班主任老师有电话号码,学生需要知道班
主任老师的电话号码以便于在合适时的时候拨打,在
这样的组合中,老师就是一个被观察者(Subject),
学生就是需要知道信息的观察者,当老师的电话号码
发生改变时,学生得到通知,并更新相应的电话记
录。该应用的类图如下图所示。;应用举例
;7.2.4 应用举例
相关代码:
Subject代码:
package observer;
public interface Subject{ //目标类的定义
public void attach(Observer o); //注册一个观察者
public void detach(Observer o); //删除一个观察者
public void notice(); //通知所有观察者更新
}
Observer代码:
package observer;
public interface Observer{ //观察者类定义
public void update(); //更新观察者
};7.2.4 应用举例
Teacher代码;
package observer;
import java.util.Vector;
public class Teacher implements Subject{
private String phone; //电话号码
private Vector students; //学生
public Teacher(){
phone = ;
students = new Vector();
}
public void attach(Observer o){
students.add(o);//注册学生
}
;7.2.4 应用举例
Student代码:
package observer;
public class Student implements O
您可能关注的文档
最近下载
- 基于“双高”背景下高职院校一流师资队伍建设的思考-来源:现代职业教育(高职高专)(第2020030期)-山西教育教辅传媒集团有限责任公司.pdf VIP
- DG_TJ08-2062-2017:住宅工程套内质量验收规范.pdf VIP
- 第二届全国数字化机房安装技能竞赛(电气设备安装工赛项)考试题库资料-下(多选、判断题汇总).pdf
- 北京-威旺M20-产品使用说明书-威旺M20 A12-BJ6443V4SMB-M20使用说明书V22015-01-29.pdf
- 春花秋月何时了G调正谱.pdf
- 急性心肌梗死及PCI术d 护理查房ppt课件.ppt
- 颅内压增高与治疗培训ppt课件.pptx VIP
- 公司关于“精益管理年”宣传工作的方案.pdf VIP
- 钻孔灌注桩试桩技术要求.docx
- 剑桥(join in)版三年级上册英语全册教学课件(配2024年秋改版教材).pptx
文档评论(0)