




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2010-1-101Java面向对象程序设计面向对象程序设计 第第8章章配合例子源代码一起使用例子源代码一起使用Power point 制作:耿祥义 张跃平几个重要的设计模式 2010-1-102主要内容主要内容设计模式简介设计模式简介策略模式策略模式中介者模式中介者模式模板方法模式模板方法模式难点难点策略模式策略模式导读导读 一个好的设计系统往往是易维护、易扩展、易复用的 。 设计模式从一些优秀的设计系统中总结出的设计精髓,因此学习设计模式对提高设计能力无疑是非常有帮助的。 可以是通过讲解设计模式体现面向对象的设计思想,这非常有利于更好地使用面向对象语言解决设计中的诸多问题。2010-1-1
2、038.1 设计模式简介设计模式简介 8.1.1 什么是设计模式什么是设计模式 一个设计模式(一个设计模式(patternpattern)是针对某一类问是针对某一类问题的最佳解决方案,而且已经被成功应用于许题的最佳解决方案,而且已经被成功应用于许多系统的设计中,它解决了在某种特定情景中多系统的设计中,它解决了在某种特定情景中重复发生的某个问题,即一个设计模式是从许重复发生的某个问题,即一个设计模式是从许多优秀的软件系统中总结出的成功的可复用的多优秀的软件系统中总结出的成功的可复用的设计方案。设计方案。 2010-1-1048.1.2 学习设计模式的必要性学习设计模式的必要性 学习并使用模式能使
3、设计的系统易维护、可扩学习并使用模式能使设计的系统易维护、可扩展性强、复用性好。展性强、复用性好。 学习设计模式不仅可以使我们了解、正确使用设学习设计模式不仅可以使我们了解、正确使用设计模式,更重要的是可以使我们更加深刻地理解面计模式,更重要的是可以使我们更加深刻地理解面向对象的设计思想,非常有利于我们更好地使用面向对象的设计思想,非常有利于我们更好地使用面向对象语言解决设计中的诸多问题。向对象语言解决设计中的诸多问题。 2010-1-1058.1.3 什么是框架什么是框架 框架是针对某个领域,提供用于开发应用系框架是针对某个领域,提供用于开发应用系统的类的集合,程序设计者可以使用框架提供的统
4、的类的集合,程序设计者可以使用框架提供的类设计一个应用程序,而且在设计应用程序时可类设计一个应用程序,而且在设计应用程序时可以针对特定的问题使用某个设计模式。以针对特定的问题使用某个设计模式。 框架与模式相比:框架与模式相比: 1 1层次不同层次不同 2 2范围不同范围不同 3 3相互关系密切相互关系密切 2010-1-1068.2 策略模式策略模式 8.2.1 概述概述 基于基于“面向抽象编程面向抽象编程”的原则就容易使设计的类应对用户需求的变化,的原则就容易使设计的类应对用户需求的变化,使得设计的系统满足使得设计的系统满足“开开-闭闭”原则原则。 2010-1-1078.2.2 策略模式的
5、定义策略模式的定义 策略模式的定义:策略模式的定义:定义一系列算法,把它们定义一系列算法,把它们一个个封装起来,并且使它们可相互替换。本一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。模式使得算法可独立于使用它的客户而变化。 2010-1-1088.2.3 模式的结构模式的结构 在策略模式中,封装算法标识的接口称作在策略模式中,封装算法标识的接口称作策略策略,实现该接口,实现该接口的类称作的类称作具体策略具体策略。 角色角色: :策略策略( (Strategy)Strategy), ,具体策略具体策略( (ConcreteStrategy)ConcreteStr
6、ategy), ,上下文上下文( (ContextContext) )。1.1.策略模式的策略模式的UMLUML类图类图 3.结构的描述结构的描述 : 策略策略( (Strategy) Strategy) Computable.javaComputable.java 具体策略具体策略( (ConcreteStrategy) ConcreteStrategy) StrategyOne.javaStrategyOne.java , , StrategyTwo.java, StrategyThree.javaStrategyTwo.java, StrategyThree.java 上下文上下文( (
7、ContextContext) ) GymnasticsGame.java GymnasticsGame.java 2010-1-1098.2.4 模式的使用模式的使用 应用程序应用程序Application.javaApplication.java中使用了策略中使用了策略模式中模式中( (8.2.3)所涉及的类,应用程序在使用策所涉及的类,应用程序在使用策略模式时,需要创建具体策略的实例,并传递略模式时,需要创建具体策略的实例,并传递给上下文对象。给上下文对象。 2010-1-10108.2.5 策略模式的优点策略模式的优点 上下文上下文( (Context)Context)和具体策略和具体
8、策略( (ConcreteStrategy)ConcreteStrategy)是松耦合关系。因此上下文只知道它要使用某是松耦合关系。因此上下文只知道它要使用某一个实现一个实现StrategyStrategy接口接口类的实例,但不需要知类的实例,但不需要知道具体是哪一个类。道具体是哪一个类。 策略模式满足策略模式满足“开开- -闭原则闭原则”。当增加新。当增加新的具体策略时,不需要修改上下文类的代码,的具体策略时,不需要修改上下文类的代码,上下文就可以引用新的具体策略的实例。上下文就可以引用新的具体策略的实例。2010-1-10118.2.6 适合使用策略模式的情景适合使用策略模式的情景 一个类
9、定义了多种行为,并且这些行为一个类定义了多种行为,并且这些行为在这个类的方法中以多个条件语句的形式出现,在这个类的方法中以多个条件语句的形式出现,那么可以使用策略模式避免在类中使用大量的那么可以使用策略模式避免在类中使用大量的条件语句。条件语句。 程序不希望暴露复杂的、与算法相关的程序不希望暴露复杂的、与算法相关的数据结构,那么可以使用策略模式封装算法。数据结构,那么可以使用策略模式封装算法。 需要使用一个算法的不同变体。需要使用一个算法的不同变体。2010-1-10128.2.7 策略模式相对继承机制的优势策略模式相对继承机制的优势 策略模式采用的是组合方法,即将一个类策略模式采用的是组合方
10、法,即将一个类的某个方法的内容的不同变体分别封装在不同的某个方法的内容的不同变体分别封装在不同的类中,而该类仅仅依赖这些类所实现的一个的类中,而该类仅仅依赖这些类所实现的一个共同接口。共同接口。 2010-1-10138.3 中介者模式中介者模式 8.3.1 概述概述 中介者模式体现了中介者模式体现了 “ “多用组合,少用继承多用组合,少用继承”和和“低藕合低藕合”原则,尤其体现了怎样合理地使用组合。原则,尤其体现了怎样合理地使用组合。 2010-1-10148.3.2 中介者模式的定义中介者模式的定义 中介者模式的定义:中介者模式的定义:用一个中介对象来封用一个中介对象来封装一系列的对象交互
11、。中介者使各对象不需要装一系列的对象交互。中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。以独立地改变它们之间的交互。 2010-1-10158.3.3 模式的结构模式的结构 角色角色: :中介者中介者( (Mediator)Mediator), ,具体中介者具体中介者( (ConcreteMediator )ConcreteMediator ), ,同事同事( (Colleague),Colleague),具体同事具体同事(ConcreteColleague)ConcreteColleague)。中介者模式的中介
12、者模式的UMLUML类图类图 3.结构的描述结构的描述 : 同事同事( (Colleague) Colleague) Colleague.java Colleague.java 具体中介者具体中介者( (Mediator)Mediator)ConcreteMediator.javaConcreteMediator.java 具体同事具体同事(ConcreteColleague)ConcreteColleague)ColleagueA.java , ColleagueB.java , ColleagueC.java ColleagueA.java , ColleagueB.java , Coll
13、eagueC.java 2010-1-10168.3.4 模式的使用模式的使用 应用程序应用程序Application.javaApplication.java中使用了中介中使用了中介者模式结构中者模式结构中( (8.3.3)所涉及的类。所涉及的类。 2010-1-10178.3.5 中介者模式的优点中介者模式的优点 可以避免许多的对象为了之间的通信而可以避免许多的对象为了之间的通信而相互显示引用,否则不仅系统难于维护,而且相互显示引用,否则不仅系统难于维护,而且也使其他系统难以复用这些对象。也使其他系统难以复用这些对象。 可以通过中介者将原本分布于多个对象可以通过中介者将原本分布于多个对象之
14、间的交互行为集中在一起。当这些对象之间之间的交互行为集中在一起。当这些对象之间需要改变之间的通信行为时,只需使用一个具需要改变之间的通信行为时,只需使用一个具体中介者即可,不必修改各个具体同事的代码,体中介者即可,不必修改各个具体同事的代码,即这些同事可被重用。即这些同事可被重用。2010-1-10188.3.6 适合使用中介者模式的情景适合使用中介者模式的情景 系统中许多对象以复杂的方式交互,所系统中许多对象以复杂的方式交互,所导致的依赖关系使系统难以理解和维护,这时导致的依赖关系使系统难以理解和维护,这时应考虑使用中介者模式。应考虑使用中介者模式。2010-1-10198.4 模板方法模式
15、模板方法模式 8.4.1 概述概述 模板方法模式体现了怎样合理地组织算法。例如:模板方法模式体现了怎样合理地组织算法。例如: 类客运车站在安排乘客上车时都进行:安全检查、类客运车站在安排乘客上车时都进行:安全检查、验证车票,选择车体类型三个步骤。因此我们可以在验证车票,选择车体类型三个步骤。因此我们可以在一个抽象类中包含有:一个抽象类中包含有:“安全检查安全检查”、“验证车票验证车票”,“选择车体选择车体”的抽象方法,而且该抽象类特别地包含的抽象方法,而且该抽象类特别地包含有一个称作有一个称作“模板模板”的方法,该方法顺序地调用的方法,该方法顺序地调用“安安全检查全检查”、“验证车票验证车票”
16、,“选择车体选择车体”这三个方法这三个方法方法。方法。 2010-1-10208.4.2 模板方法模式的定义模板方法模式的定义 模板方法模式的定义:模板方法模式的定义:定义一个操作中的定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。可重定义该算法的某些特定步骤。 2010-1-10218.4.3 模式的结构模式的结构 角色角色: :抽象模板抽象模板( (Abstract Template),Abstract Template),具体模板具
17、体模板( (Concrete Template)Concrete Template)。模板方法模式的模板方法模式的UMLUML类图类图 3.结构的描述结构的描述 : 抽象模板抽象模板( (Abstract Template) Abstract Template) Station.java Station.java 具体模板具体模板( (Concrete Template) Concrete Template) RailwayStation.java , AutoStation.java RailwayStation.java , AutoStation.java 2010-1-10228.4.4 模式的使用模式的使用 应用程序应用程序Application.javaApplication.java中使用了中使用了模板模板方法模式方法模式结构中结构中( (8.4.3)所涉及的类。所涉及的类。 2010-1-10238.4.5 模板方法模式的优点模板方法模式的优点 可以通过在抽象模板定义模板方法给出可以通过在抽象模板定义模板方法给出成熟的算法步骤,同
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年上半年安徽芜湖市鸠江区事业单位招考工作人员易考易错模拟试题(共500题)试卷后附参考答案
- 2025年上半年安徽池州事业单位联考易考易错模拟试题(共500题)试卷后附参考答案
- 2025年上半年安徽安庆望江县卫健委下属事业单位及县域医共体成员单位招聘49人易考易错模拟试题(共500题)试卷后附参考答案
- 2025年上半年安徽合肥高新区管委会工作人员招聘99人易考易错模拟试题(共500题)试卷后附参考答案
- 2025年上半年宁波市鄞州区公共事务受理中心编外人员招考易考易错模拟试题(共500题)试卷后附参考答案
- 2025年上半年宁波市奉化市动物卫生监督所招考屠宰检疫协检员易考易错模拟试题(共500题)试卷后附参考答案
- 2025年上半年宁夏永宁县政务服务帮办人员招考易考易错模拟试题(共500题)试卷后附参考答案
- 2024辽宁沈阳盛京资产管理集团有限公司所属企业沈阳盛京百货管理(集团)有限公司拟聘用人员笔试参考题库附带答案详解
- 2025年小球藻粉项目可行性研究报告
- 2024福建泉州发展集团人才引进招聘32人笔试参考题库附带答案详解
- 固定资产折旧合同
- 寒区作战伤员的护理
- 2024年世界职业院校技能大赛高职组“市政管线(道)数字化施工组”赛项考试题库
- 2024年职工普法教育宣讲培训课件
- 自编冷库库容制冷量设备对照表
- “全员安全风险辨识”活动实施方案
- 追觅科技在线测评逻辑题
- 凝中国心铸中华魂铸牢中华民族共同体意识-小学民族团结爱国主题班会课件
- 第一编第3章 古希腊教育的兴衰
- 女性更年期科普-健康科普课件
- 全过程工程咨询管理服务方案投标方案(技术方案)
评论
0/150
提交评论