南京大学:《面向对象技术 OOT》课程教学资源(PPT课件讲稿)设计模式 Design Patterns(1)

Design Pattern (1) 设计模式(1) Institute of Computer Software 2021/2/5 Nanjing University
设计模式(1) Design Pattern (1) 2021/2/5 Institute of Computer Software Nanjing University 1

最病 过摘要 2 口 Agile Design a design principles 口 Design Patterns a Why What, How a Creational structural and behavioral patterns Institute of Computer Software 2021/2/5 Nanjing University
摘要 Agile Design design principles Design Patterns Why, What, How Creational, Structural and Behavioral Patterns 2021/2/5 Institute of Computer Software Nanjing University 2

最病 A Design Principles 口SRP单一职责原则 口OCP开放-封闭原则 口 LSP Liskov(里氏)替换原则 口DP依赖倒置原则 口|SP接口隔离原则 D CARP(Composition/ Aggregation Reuse Principle 合成/聚合复用原则 LoD( Law of demeter)迪米特法则 Institute of Computer Software 2021/2/5 Nanjing University
Design Principles SRP 单一职责原则 OCP 开放-封闭原则 LSP Liskov(里氏)替换原则 DIP 依赖倒置原则 ISP 接口隔离原则 CARP (Composition/Aggregation Reuse Principle ) 合成/聚合复用原则 LoD (Law of Demeter) 迪米特法则 2021/2/5 Institute of Computer Software Nanjing University 3

最病 E CARP 口 Composition(合成)s. Aggregation(聚合) 口聚合表示“拥有”关系或者整体与部分的关系 口合成是一种强得多的“拥有”关系——部分和整体 的生命周期是一样的。 口换句话说:合成是值的聚合( Aggregation by Value),而一般说的聚合是引用的聚合 (Aggregation by Reference) Institute of Computer Software 2021/2/5 Nanjing University
CARP Composition(合成) vs. Aggregation(聚合) 聚合表示“拥有”关系或者整体与部分的关系 合成是一种强得多的“拥有”关系——部分和整体 的生命周期是一样的。 换句话说:合成是值的聚合(Aggregation by Value),而一般说的聚合是引用的聚合 (Aggregation by Reference) 2021/2/5 Institute of Computer Software Nanjing University 4

复用 5 口复用的基本种类 口合成/聚合复用:将已有对象纳入到新对象中,使 之成为新对象的一部分 继承 Institute of Computer Software 2021/2/5 Nanjing University
复用 复用的基本种类 合成/聚合复用:将已有对象纳入到新对象中,使 之成为新对象的一部分。 继承 2021/2/5 Institute of Computer Software Nanjing University 5

复用 6 口继承的优点 口新类易实现 口易修改或扩展 口继承的缺点: 口继承复用破环包装,白箱复用 口超类发生变化,子类不得不改变 口继承的实现是静态的,不能在运行时改变 Institute of Computer Software 2021/2/5 Nanjing University
复用 继承的优点: 新类易实现 易修改或扩展 继承的缺点: 继承复用破环包装,白箱复用. 超类发生变化,子类不得不改变. 继承的实现是静态的,不能在运行时改变. 2021/2/5 Institute of Computer Software Nanjing University 6

复用 7 口合成/聚合的优点 口新对象存取成分对象的唯一方法是通过成分对象的接口。 口黑箱复用,因为成分对象的内部细节是新对象所看不见的。 口支持包装。 口所需的依赖较少。 口每一个新的类可以将焦点集中在一个任务上。 口这种复用可以在运行时间内动态进行,新对象可以动态的引用与 成分对象类型相同的对象。 口作为复用手段可以应用到几乎任何环境中去 口缺点:系统中会有较多的对象需要管理 Institute of Computer Software 2021/2/5 Nanjing University
复用 合成/聚合的优点 新对象存取成分对象的唯一方法是通过成分对象的接口。 黑箱复用,因为成分对象的内部细节是新对象所看不见的。 支持包装。 所需的依赖较少。 每一个新的类可以将焦点集中在一个任务上。 这种复用可以在运行时间内动态进行,新对象可以动态的引用与 成分对象类型相同的对象。 作为复用手段可以应用到几乎任何环境中去。 缺点:系统中会有较多的对象需要管理 2021/2/5 Institute of Computer Software Nanjing University 7

复用 口优先使用对象合成/聚合,而不是继承 口利用合成/聚合可以在运行时动态配置组件的功 能,并防止类层次规模的爆炸性增长 口区分HASA和SA Institute of Computer Software 2021/2/5 Nanjing University
复用 优先使用对象合成/聚合,而不是继承 利用合成/聚合可以在运行时动态配置组件的功 能,并防止类层次规模的爆炸性增长 区分HAS-A 和 IS-A 2021/2/5 Institute of Computer Software Nanjing University 8

复用 口Cod法则:什么时候使用继承作为复用的工具 口只有当以下Cod条件都满足时才应当使用继承 口子类是超类的一个特殊种类,而不是超类的一个角色,也就是区 分“HaS-A和“A”。只有“s-A关系才符合继承关系,“Has-A” 关系应当用聚合来描述。 口永远不会出现需要将子类换成另外一个类的子类的情况。如果不 能肯定将来是否会变成另外一个子类的话,就不要使用继承 子类具有扩展超类的责任,而不是具有置换调( override)或注销 掉(№U|fy)超类的责任。如果一个子类需要大量的置换掉超类的 行为,那么这个类就不应该是这个超类的子类 口只有在分类学角度上有意义时,才可以使用继承。不要从工具类 继承。 Institute of Computer Software 2021/2/5 Nanjing University
复用 Coad法则:什么时候使用继承作为复用的工具 只有当以下Coad条件都满足时才应当使用继承 子类是超类的一个特殊种类,而不是超类的一个角色,也就是区 分“Has-A”和“Is-A”。只有“Is-A”关系才符合继承关系,“Has-A” 关系应当用聚合来描述。 永远不会出现需要将子类换成另外一个类的子类的情况。如果不 能肯定将来是否会变成另外一个子类的话,就不要使用继承。 子类具有扩展超类的责任,而不是具有置换调(override)或注销 掉(Nullify)超类的责任。如果一个子类需要大量的置换掉超类的 行为,那么这个类就不应该是这个超类的子类。 只有在分类学角度上有意义时,才可以使用继承。不要从工具类 继承。 2021/2/5 Institute of Computer Software Nanjing University 9

最病 A LoD 口别名: Least Knowledge Principle最少知识原则 口表述 口只与你直接的朋友们通信 Only talk to your immediate friends 口不要跟陌生人说话 Don's talk to strangers 口每一个软件单位对其他的单位都只有最少的知识,而且局限 于那些与本单位密切相关的软件单位。 Institute of Computer Software 2021/2/5 Nanjing University
LoD 别名:Least Knowledge Principle 最少知识原则 表述: 只与你直接的朋友们通信 Only talk to your immediate friends 不要跟陌生人说话 Don's talk to strangers 每一个软件单位对其他的单位都只有最少的知识,而且局限 于那些与本单位密切相关的软件单位。 2021/2/5 Institute of Computer Software Nanjing University 10
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《算法分析与设计》课程教学资源(PPT课件讲稿)第六章 基本检索与周游方法(一般方法).ppt
- 《面向对象技术》课程教学大纲 Technology of Object-Oriented Programming.doc
- 厦门大学:Web技术(PPT课件讲稿)网站快速开发 & Web前端技术.ppt
- 机械工业出版社:国家“十一五”规划教材《数据库原理与应用教程》教学资源(PPT课件,第3版)第4章 数据操作.ppt
- 《高级语言程序设计》课程教学资源(试卷习题)试题二(无答案).doc
- 《Photoshop教程》教学资源(PPT课件)第6章 Photoshop的绘图工具.ppt
- 《计算机网络》课程教学大纲 Computer Networks.pdf
- 《VB程序设计》课程教学资源(PPT课件讲稿)第二章 VB语言基础.ppt
- 西安电子科技大学:《现代密码学》课程教学资源(PPT课件讲稿)第一章 绪论(主讲:董庆宽).pptx
- 可信计算 Trusted Computing(PPT讲稿)TSS - TCG Software Stack.ppt
- 《Web网站设计与开发》课程教学资源(PPT课件讲稿)第10章 Java Web实用开发技术.ppt
- 电子科技大学:《计算机操作系统》课程教学资源(PPT课件讲稿)第二章 进程与调度 Processes and Scheduling.ppt
- 西安交通大学:《物联网技术导论》课程教学资源(PPT课件)第一章 物联网技术概论(主讲:桂小林).ppt
- 《计算机网络教程》课程PPT教学课件(第三版)第3章 网络体系结构与网络协议.ppt
- 《C语言程序设计》课程教学资源(PPT课件讲稿)第9章 用户自己建立数据类型.pptx
- 《The C++ Programming Language》课程教学资源(PPT课件讲稿)Lecture 07 Exception Handling.ppt
- 香港城市大学:《计算机图形学》课程教学资源(PPT课件讲稿)图的算法 Graph Algorithms.ppt
- 白城师范学院:《数据库系统概论 An Introduction to Database System》课程教学资源(PPT课件讲稿)第五章 数据库完整性.pptx
- 《SQL Server 2000数据库教程》教学资源(PPT课件讲稿)第11章 数据库安全性管理.ppt
- PROGRAMMING METHODOLOGY AND SOFTWARE ENGINEERING.ppt
- 上海交通大学:IT项目管理(PPT讲稿)讲座5 目标、范围管理与需求工程.ppt
- 《面向对象建模技术》课程教学资源(PPT课件讲稿)第11章 UML与RUP.ppt
- 中国科学技术大学:《网络信息安全 NETWORK SECURITY》课程教学资源(PPT课件讲稿)第九章 网络攻击.ppt
- 西安电子科技大学:《Mobile Programming》课程PPT教学课件(Android Programming)Lecture 04 Activity, Intent and UI.pptx
- 对外经济贸易大学:《电子商务概论 Electronic Commerce》课程教学资源(PPT课件讲稿)第八章 电子支付与网络银行.pptx
- 《计算机组装与维护》课程教学资源(PPT讲稿)第九章 计算机软件维护.ppt
- 《计算机组装与维护》课程教学资源(PPT课件讲稿)第16章 常见计算机故障解决案例.ppt
- 《单片机原理及接口技术》课程教学资源(PPT课件)第7章 AT89C51单片机系统扩展 7.4 数据存储器的扩展 7.5 I/O口的扩展.ppt
- 香港城市大学:Adaptive Random Test Case Prioritization(PPT讲稿).pptx
- 哈尔滨工业大学:词义消歧(PPT讲稿)Word sense disambiguation.ppt
- 大连工业大学:《数据结构》课程教学资源(PPT课件讲稿,共十章,路莹).pps
- 清华大学出版社:《计算机网络安全与应用技术》课程教学资源(PPT课件讲稿)第6章 黑客原理与防范措施.ppt
- 中国科学技术大学:《信息论与编码技术》课程教学资源(PPT课件讲稿)第2章 离散信源及其信息测度.pptx
- 《数字图像处理》课程教学资源(PPT课件)第七章 图像分割.ppt
- Detecting Evasion Attack at High Speed without Reassembly.ppt
- 南京大学:《面向对象技术 OOT》课程教学资源(PPT课件讲稿)类和对象 Class and Object.ppt
- 《数字图像处理》课程教学资源(PPT课件)第五章 代数运算.ppt
- 《高级语言程序设计》课程教学资源(试卷习题)试题三(无答案).doc
- 东南大学:《操作系统概念 Operating System Concepts》课程教学资源(PPT课件讲稿)08 Main Memory(主讲:张柏礼).ppt
- 中国科学技术大学:《高级操作系统 Advanced Operating System》课程教学资源(PPT课件讲稿)第四章 分布式进程和处理机管理.ppt