Java面向对象程序设计第2版第8章_几个重要的设计模式

  • 格式:ppt
  • 大小:380.00 KB
  • 文档页数:40

下载文档原格式

  / 40
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《Java面向对象程序设计》第2版 第8章
几个重要的设计模式
2020/8/24
配合< Java面向对象程序设计>第2版例子源代码一起使用
1
导读
一个好的设计系统往往是易维护、易扩展、易复用的 。
设计模式从一些优秀的设计系统中总结出的设计精髓,因此学习 设计模式对提高设计能力无疑是非常有帮助的。
可以是通过讲解设计模式体现面向对象的设计思想,这非常有利 于更好地使用面向对象语言解决设计中的诸多问题。
2020/8/24
6
§8.2 策略模式
策略模式(别名:政策)定义一系列算法,把它们一个个封装起来, 并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。
§8.2.1 策略模式的结构
策略模式属于行为型模式,结构中包含以下三种角色:
☛ 策略(Strategy):策略是一个接口,该接口定义若干个算法标识,
☛ 策 略 ( Strategy)
代码链接
☛上下文(Context)
☛具体策略
2020/8/24
9
§8.2.2 模式的使用
应 用 程 序 Application.java 中 使 用 了 策 略 模式中所涉及的类,应用程序在使用策略模式 时,需要创建具体策略的实例,并传递给上下 文对象。
代码链接
2020/8/24
◆ 策略模式。 ◆ 状态模式。 ◆ 命令模式。 ◆ 中介者模式。 ◆ 责任链模式。◆ 模板方法模式。 ◆ 观察者模式。◆ 访问者模式。
2.结构型模式
结构型模式涉及如何组合类和对象以形 成更大的结构,和类有关的结构型模式涉及
◆ 装饰模式。 ◆ 组合模式。 ◆ 适配器模式。◆ 外观模式。
Biblioteka Baidu
如何合理地使用继承机制,和对象有关的结 ◆ 代理模式。 ◆ 享元模式。
构型模式涉及如何合理地使用对象组合机制。 ◆ 桥接模式。
下列模式属于行结构型模式.
3.创建型模式
创建型模式涉及对象的实例化,这类模 式的特点是,不让用户代码依赖于对象的创 建或排列方式,避免用户直接使用new运算 符创建对象。下列模式属于创建型模式.
◆ 工厂方法模式。◆ 抽象工厂模式。 ◆ 生成器模式。 ◆ 原型模式。 ◆ 单件模式。
☛ 具 体 策 略 ( ConcreteStrategy): 具 体 策 略 是 实 现 策 略 接 口 的 类
(如图8.1中的ConcreteStrategyA和ConcreteStrategyB类)。具体 策略实现策略接口所定义的抽象方法,即给出算法标识的具体算法。
2020/8/24
2020/8/24
10
§8.2.3 策略模式的优点
◆上 下 文 ( Context) 和 具 体策 略 ( ConcreteStrategy) 是松耦合关系。因此上下文只知道它要使用某 一个实现Strategy接口类的实例,但不需要知道 具体是哪一个类。
◆策略模式满足“开-闭原则”。当增加新 的具体策略时,不需要修改上下文类的代码, 上下文就可以引用新的具体策略的实例。
7
策略模式结构中的角色形成的UML类图
2020/8/24
8
用问题来描述策略模式中的各个角色 简单问题:在多个裁判负责打分的比赛中,每位裁判给选手一个得分,选手的最后得分是 根据全体裁判的得分计算出来的。请给出几种计算选手得分的评分方案(策略),对于某 次比赛,可以从你的方案中选择一种方案作为本次比赛的评分方案。
访问者模式:表示一个作用于某对象结构中的各个元素的操作。它 使你可以在不改变各个元素的类的前提下定义作用于这些元素的新操作。
§8.3.1 模式的结构
访问者模式属于行为型模式,结构中包括四种角色:
☛ 抽象元素(Element):一个抽象类,该类定义了接收访问者
2020/8/24
12
§8.2.5 策略模式相对继承机制的优势
策略模式采用的是组合方法,即将一个类 的某个方法的内容的不同变体分别封装在不同 的类中,而该类仅仅依赖这些类所实现的一个 共同接口__策略。
策略模式的底层结构采用的是继承结构, 即每个具体策略都必须是策略的子类。
2020/8/24
13
§8.3 访问者模式
即定义了若干个抽象方法(如图8.1中的algorithm()方法)。
☛ 上下文(Context):上下文是依赖于策略接口的类(是面向策略设
计的类,如图8.1中的Context类),即上下文包含有用策略声明的变量 (如图8.1中的Context类中的strategy成员变量)。上下文中提供一个 方法(如图8.1中的Context类中的lookAlgorithm()方法),该方法委 托策略变量调用具体策略所实现的策略接口中的方法。
2020/8/24
11
§8.2.4 适合使用策略模式的情景
◆一个类定义了多种行为,并且这些行为 在这个类的方法中以多个条件语句的形式出现, 那么可以使用策略模式避免在类中使用大量的 条件语句。
◆程序不希望暴露复杂的、与算法相关的 数据结构,那么可以使用策略模式封装算法。
◆需要使用一个算法的不同变体。
框架是针对某个领域,提供用于开发应用系 统的类的集合,程序设计者可以使用框架提供的 类设计一个应用程序,而且在设计应用程序时可 以针对特定的问题使用某个设计模式。
框架与模式相比: 1.层次不同 2.范围不同 3.相互关系
2020/8/24
5
§8.1.4 模式分类
1.行为型模式
行为模式涉及怎样合理地设计对象之间的 交互通信,以及怎样合理为对象分配职责,让 设计富有弹性,易维护,易复用。下列模式属 于行为型模式.
2020/8/24
2
§8.1 设计模式简介
§8.1.1 什么是设计模式
一个设计模式(pattern)是针对某一类问 题的最佳解决方案,而且已经被成功应用于许 多系统的设计中,它解决了在某种特定情景中 重复发生的某个问题,即一个设计模式是从许 多优秀的软件系统中总结出的成功的可复用的 设计方案。
2020/8/24
3
§8.1.2 学习设计模式的必要性
学习并使用模式能使设计的系统易维护、可扩 展性强、复用性好。
学习设计模式不仅可以使我们了解、正确使用 设计模式,更重要的是可以使我们更加深刻地理解 面向对象的设计思想,非常有利于我们更好地使用 面向对象语言解决设计中的诸多问题。
2020/8/24
4
§8.1.3 什么是框架