版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Java面向对象程序设计杨晓燕面向对象 基本原则和模式 1 第9章 面向对象基本原则 和模式 Java面向对象技术 Java面向对象程序设计杨晓燕面向对象 基本原则和模式 2 万事万物都被永恒的真理支配并有规律的运行着。模式也是一样,不万事万物都被永恒的真理支配并有规律的运行着。模式也是一样,不 论那种模式,其背后都潜藏着一些论那种模式,其背后都潜藏着一些“永恒的真理永恒的真理”,这个真理就是设计原,这个真理就是设计原 则。设计原则往往比设计模式更重要。对于设计模式来说,为什么这个模则。设计原则往往比设计模式更重要。对于设计模式来说,为什么这个模 式要这样解决这个问题,而另一个模式要那样,它们
2、背后都遵循的就是永式要这样解决这个问题,而另一个模式要那样,它们背后都遵循的就是永 恒的设计原则。可以说,设计原则是设计模式的灵魂。恒的设计原则。可以说,设计原则是设计模式的灵魂。 l Java面向对象程序设计杨晓燕面向对象 基本原则和模式 3 UML类图类图 l UML(Unified Modeling Language), 即统一建模语言,是图标式软件设计语言。 l 类图(Class diagram)是最常用的UML图, 显示类、接口以及它们之间的静态结构和关 系,用于描述系统的结构化设计。类图最基 本的元素是类或者接口。 Java面向对象程序设计杨晓燕面向对象 基本原则和模式 4 类的U
3、ML图 l UML类图显示类的三个组成部分,第一是 Java中定义的类名,第二个是该类的属性, 第三个是该类提供的方法。 l 第一层为类的名称,第二层是类的属性,第 三层表示的是类的方法或称为操作。 一个 类图的类名是必须的 Java面向对象程序设计杨晓燕面向对象 基本原则和模式 5 类的UML图 l 注意:属性和方法之前附加的可见性修饰 符, “+”表示public,“-”表示 private,“#”表示protected。省略这些修 饰符表示具有package(包)级别的可见性。 冒号后边表示数据的类型或方法的返回值类 型。 l 如果是抽象类,类名以斜体表示。 Java面向对象程序设计杨晓
4、燕面向对象 基本原则和模式 6 UML类图及关系 Java面向对象程序设计杨晓燕面向对象 基本原则和模式 7 接口的UML表示 Java面向对象程序设计杨晓燕面向对象 基本原则和模式 8 依赖关系:虚线+箭头 Java面向对象程序设计杨晓燕面向对象 基本原则和模式 9 关联关系:空心的菱形+实线箭头 Java面向对象程序设计杨晓燕面向对象 基本原则和模式 10 组合关系:实心的菱形+实线箭头 Java面向对象程序设计杨晓燕面向对象 基本原则和模式 11 l 实线+空心的三角形,起始端是子类,空心 三角形指向终点端的父类。 l 泛化关系: Java面向对象程序设计杨晓燕面向对象 基本原则和模式
5、12 实现关系 l 实现关系的UML表示法:虚线+空心三角形。 l Java面向对象程序设计杨晓燕面向对象 基本原则和模式 13 发现变化,并封装变化 l 在软件设计之初,需要发现所要开发软件中 可能存在或已经存在的“变化”,然后利用 抽象的方式对这些变化进行封装。抽象是没 有具体的代码实现,抽象代表了一种可扩 展 。 l 参阅教材例9.1 Java面向对象程序设计杨晓燕面向对象 基本原则和模式 14 单一职责原则和最少知识原则 l 在单一职责(Single Responsibility Principle, 简称为SRP)中,就一个类而言, 应该仅有一个引起它变化的原因。也就是说, 不要把变
6、化原因各不相同的职责放在一起。 Java面向对象程序设计杨晓燕面向对象 基本原则和模式 15 单一职责原则和最少知识原则 l 最少知识原则(Least Knowledge Principle, 简称为LKP)又叫迪米特法则 (Law of Demeter,简写为LoD),就是 说一个对象应当对其他对象有尽可能少的了 解。就像我国古代老子所说的“使民无知” 和“小国寡民”的统治之术,“是以圣人之 治,虚其心,实其腹,弱其志,常使民无知 无欲。”以及 “小国寡民邻国相望,鸡 犬之声相闻,民至老死,不相往来”。 Java面向对象程序设计杨晓燕面向对象 基本原则和模式 16 开放-封闭原则 l 所谓“
7、开放-封闭原则”(Open-Closed Principle),也称“开-闭原则”,就是让 设计对扩展开放,对修改关闭。也就是说, 不允许更改的是系统的抽象层,而允许更改 的是系统的实现层。高层模块不应该依赖低 层模块,抽象不应该依赖细节,使系统设计 更为通用、更为稳定。面向抽象编程,这里面向抽象编程,这里 的抽象主要指的是抽象类或接口。的抽象主要指的是抽象类或接口。 Java面向对象程序设计杨晓燕面向对象 基本原则和模式 17 开放-封闭原则 l “开放-封闭原则”实质上是指当一个设计中 增加新的模块时,不需要修改现有模块。 l Java面向对象程序设计杨晓燕面向对象 基本原则和模式 18
8、子类型能够替换基类型原则 l 子类型能够替换基类型原则也叫里氏代换原则子类型能够替换基类型原则也叫里氏代换原则 (Liskov Substitution Principle ,简称,简称 LSP),里氏代换原则中说,任何基类可以出现的),里氏代换原则中说,任何基类可以出现的 地方,子类一定可以出现,且程序运行正常。地方,子类一定可以出现,且程序运行正常。 l 特别提醒:特别提醒:在进行设计的时候,我们尽量从抽象类 继承,而不是从具体类继承。如果从继承等级树来 看,所有叶子节点应当是具体类,而所有的树枝节 点应当是抽象类或者接口。 l l 程序参考例9.3 Java面向对象程序设计杨晓燕面向对象
9、 基本原则和模式 19 合成/聚合复用原则 l “优先使用对象组合,而不是类继承”是面向对象 设计的又一个原则。并不是说继承不重要,而是因 为每个学习OOP的人都知道OO的基本特性之一就 是继承,以至于继承已经被滥用了,而对象组合技 术往往被忽视了。 l 一个类的成员变量可以是一个类创建的对象,那么 该类创建的对象就包含了其他类的对象,也就是说 该对象由其他对象组合而成了。对象与所包含的对对象与所包含的对 象属于弱耦合关系,因为如果修改当前对象所包含象属于弱耦合关系,因为如果修改当前对象所包含 的对象的类代码,不必修改当前对象的类的代码。的对象的类代码,不必修改当前对象的类的代码。 Java面
10、向对象程序设计杨晓燕面向对象 基本原则和模式 20 9.3 面向对象的设计模式 l 模式是针对特定场景下的特定问题的可重复、模式是针对特定场景下的特定问题的可重复、 可表达的解决方案。可表达的解决方案。 l 如果你期望成为一名出色的Java软件开发者, 就应该学习设计模式。 l 面向对象模式代表了一种思想,而不是具体面向对象模式代表了一种思想,而不是具体 细节。细节。 Java面向对象程序设计杨晓燕面向对象 基本原则和模式 21 策略模式的定义和结构 l The Strategy Design Pattern defines a family of algorithms, encapsulat
11、es each one, and makes them interchangeable. Strategy lets the algorithms vary independently from the clients that use it.(策略模式定义了一系列的算法,并将每一 个算法封装起来,而且使它们还可以相互替换。 策略模式让算法独立于使用它的客户而独立变 化。) Java面向对象程序设计杨晓燕面向对象 基本原则和模式 22 l 算法就是需要完成某项任务的过程。算法是 个过程包含一些指令序列,接受收入, 产生输出。单个方法也许也是个算法:它接 受输入其参数列表并产生输出作为 返回值。
12、在某些情况下,算法也许完全包含 在一个方法中,但是算法的实现经常依赖于 多个方法的相互作用。 l 案例见教材9.3.2 Java面向对象程序设计杨晓燕面向对象 基本原则和模式 23 Java面向对象程序设计杨晓燕面向对象 基本原则和模式 24 l结构和角色分析结构和角色分析: l(1)Context(应用场景) l 需要使用ConcreteStrategy提供的算法,体现在程序的35 行,42行、44行和46行。 l 内部维护一个Strategy的实例,体现在程序的28行。 l 负责动态设置运行时Strategy具体的实现算法,体现在程 序的42行、44行和46行。 l 负责跟Strategy
13、之间的交互和数据传递,体现在28-31行。 l(2)Strategy(抽象策略类) l 定义了一个公共接口,各种不同的算法以不同的方式实现这 个接口,Context使用这个接口调用不同的算法,一般使用接 口或抽象类实现。 l(3) ConcreteStrategy(具体策略类) l实现了Strategy定义的接口,提供具体的算法实现。 Java面向对象程序设计杨晓燕面向对象 基本原则和模式 25 中介者模式的结构与应用 l 官方策略模式的定义:The Mediator Pattern define an object that encapsulates how a set of objects
14、 interact. l 中介者模式用一个中介对象来封装一系列的 对象交互,从而使它们可以较松散的耦合。 体现“优先使用对象组合,少用继承”的原 则。 Java面向对象程序设计杨晓燕面向对象 基本原则和模式 26 Java面向对象程序设计杨晓燕面向对象 基本原则和模式 27 中介者模式的角色 (1) 抽象中介者(Mediator):定义统一的接 口,用于各同事角色(Colleague)之间的通信。 (2) 具体中介者(Concrete Mediator):具 体中介者是实现中介者接口的类。通过协调 (coordinating)各同事角色(Colleague)实现 协作行为(cooperativ
15、e behavior)。为此它要 知道并引用各个同事角色。 (3) 同事(Colleague):一个接口,规定了 具体同事需要实现的方法。每一个同事角色都知道 对应的具体中介者,而且与其他的同事角色通信的 时候,一定要通过中介者协作。 应用见9.3.3案例 Java面向对象程序设计杨晓燕面向对象 基本原则和模式 28 模板方法的结构与应用 l The Template Method Pattern defines the skeleton of an algorithm in a method, deferring some steps to subclasses. Template meth
16、od lets subclasses redefine certain steps of an algorithm without changing the algorithms structure. l 模板方法模式:在一个方法中定义一个算法的骨架, 而将一些实现步骤延迟到子类中。模板方法使得子 类可以在不改变算法结构的情况下,重新定义算法 中的某些步骤。 Java面向对象程序设计杨晓燕面向对象 基本原则和模式 29 l 模板方法要点模板方法要点: l(1) 模板方法中的非final方法(默认实现或不做事的方法) 称为“钩子”。 l(2) 钩子可以简化子类的实现。 l(3) 钩子可以让子类能够有机会对模板方法中某些即将发生 的(或刚刚发生的)步骤做出反应。 l(4) primit
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度木制玩具设计与制造木工分包合同范本4篇
- 2025年度内墙腻子施工技术培训与推广合同2篇
- 二零二五年度全国连锁培训学校股权合作框架合同
- 课题申报参考:岷江流域西南官话语法内部差异及历史演变研究
- 2025版二零二五年度教育信息化项目实施合同范本3篇
- 二零二五年度工业用地面积调整补充合同4篇
- 二零二五年度农民工就业创业扶持政策合作协议2篇
- 2025年度国产婴幼儿奶粉品牌全国分销合同4篇
- 基于大数据分析的2025年度农产品市场需求预测合同2篇
- 二零二五年度住宅室内软装搭配合同4篇
- 《社区康复》课件-第三章 社区康复的实施
- 胰岛素注射的护理
- 云南省普通高中学生综合素质评价-基本素质评价表
- 2024年消防产品项目营销策划方案
- 闻道课件播放器
- 03轴流式压气机b特性
- 五星级酒店收入测算f
- 大数据与人工智能ppt
- 人教版八年级下册第一单元英语Unit1 单元设计
- GB/T 9109.5-2017石油和液体石油产品动态计量第5部分:油量计算
- 邀请函模板完整
评论
0/150
提交评论