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

Design Pattern (1) 设计模式(1) Institute of Computer Software 2022-2-27 Nanjing University
设计模式(1) Design Pattern (1) 2022-2-27 Institute of Computer Software Nanjing University 1

&雪扇 摘要 UNIVE 2 Agile Design ▣design principles Design Patterns ▣Why,What,How Creational,Structural and Behavioral Patterns Institute of Computer Software 2022-2-27 Nanjing University
摘要 Agile Design design principles Design Patterns Why, What, How Creational, Structural and Behavioral Patterns 2022-2-27 Institute of Computer Software Nanjing University 2

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

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

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

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

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

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

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

&扇 LoD 10 口别名:Least Knowledge Principle最少知识原则 口表述: 口只与你直接的朋友们通信Only talk to your immediate friends 口不要跟陌生人说话Don's talk to strangers 口 每一个软件单位对其他的单位都只有最少的知识,而且局限 于那些与本单位密切相关的软件单位。 Institute of Computer Software 2022-2-27 Nanjing University
LoD 别名:Least Knowledge Principle 最少知识原则 表述: 只与你直接的朋友们通信 Only talk to your immediate friends 不要跟陌生人说话 Don ' s talk to strangers 每一个软件单位对其他的单位都只有最少的知识,而且局限 于那些与本单位密切相关的软件单位。 2022-2-27 Institute of Computer Software Nanjing University 10
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 南京大学:《面向对象技术 OOT》课程教学资源(PPT课件讲稿)10 敏捷软件开发 Agile Software Development.ppt
- 南京大学:《面向对象技术 OOT》课程教学资源(PPT课件讲稿)09 面向对象的分析与设计简介 OOA & OOD:An introduction.ppt
- 南京大学:《面向对象技术 OOT》课程教学资源(PPT课件讲稿)08 对象序列化和持久化 Serialization and Persistence.ppt
- 南京大学:《面向对象技术 OOT》课程教学资源(PPT课件讲稿)07 Java并发编程 Concurrent Programming in Java.ppt
- 南京大学:《面向对象技术 OOT》课程教学资源(PPT课件讲稿)06 并发对象 Concurrent Objects.ppt
- 南京大学:《面向对象技术 OOT》课程教学资源(PPT课件讲稿)05 异常处理 Exception Handling.ppt
- 南京大学:《面向对象技术 OOT》课程教学资源(PPT课件讲稿)04 契约式设计 Design by Contract.ppt
- 南京大学:《面向对象技术 OOT》课程教学资源(PPT课件讲稿)03 类和对象 Class and Object.ppt
- 南京大学:《面向对象技术 OOT》课程教学资源(PPT课件讲稿)02 抽象数据类型 Abstract Data Types.ppt
- 南京大学:《面向对象技术 OOT》课程教学资源(PPT课件讲稿)01 Introduction(主讲:余萍).ppt
- 西安石油大学计算机学院:《信息系统分析与设计 Information System Analysis and Design》课程教学资源(PPT课件)第16讲 信息系统应用.ppt
- 西安石油大学计算机学院:《信息系统分析与设计 Information System Analysis and Design》课程教学资源(PPT课件)第15讲 信息系统管理.ppt
- 西安石油大学计算机学院:《信息系统分析与设计 Information System Analysis and Design》课程教学资源(PPT课件)第14讲 实现与测试.ppt
- 西安石油大学计算机学院:《信息系统分析与设计 Information System Analysis and Design》课程教学资源(PPT课件)第13讲 系统设计实践(小区物业管理系统).ppt
- 西安石油大学计算机学院:《信息系统分析与设计 Information System Analysis and Design》课程教学资源(PPT课件)第12讲 详细设计(下)界面设计.ppt
- 西安石油大学计算机学院:《信息系统分析与设计 Information System Analysis and Design》课程教学资源(PPT课件)第11讲 详细设计(中)数据库设计.ppt
- 西安石油大学计算机学院:《信息系统分析与设计 Information System Analysis and Design》课程教学资源(PPT课件)第10讲 详细设计(上).ppt
- 西安石油大学计算机学院:《信息系统分析与设计 Information System Analysis and Design》课程教学资源(PPT课件)第09讲 体系结构设计.ppt
- 西安石油大学计算机学院:《信息系统分析与设计 Information System Analysis and Design》课程教学资源(PPT课件)第08讲 需求建模与总结.ppt
- 西安石油大学计算机学院:《信息系统分析与设计 Information System Analysis and Design》课程教学资源(PPT课件)第07讲 需求分析实践.ppt
- 南京大学:《面向对象技术 OOT》课程教学资源(PPT课件讲稿)12 设计模式 Design Patterns(2).ppt
- 南京大学:《面向对象技术 OOT》课程教学资源(PPT课件讲稿)13 设计模式 Design Patterns(3).ppt
- 南京大学:《面向对象技术 OOT》课程教学资源(PPT课件讲稿)14 模式和框架 Pattern and Framework.ppt
- 南京大学:《面向对象技术 OOT》课程教学资源(PPT课件讲稿)15 面向方面的编程 Aspect Oriented Programming(AOP).ppt
- 南京大学:《面向对象技术 OOT》课程教学资源(PPT课件讲稿)16 构件化软件 Component Software.ppt
- 南京大学:《面向对象技术 OOT》课程教学资源(PPT课件讲稿)17 分布对象 Distributed Objects(1).ppt
- 南京大学:《面向对象技术 OOT》课程教学资源(PPT课件讲稿)18 分布对象 Distributed Objects(2).ppt
- 南京大学:《面向对象技术 OOT》课程教学资源(PPT课件讲稿)19 复习和总结 Object-Oriented Technology:Review and Conclusion Remarks.ppt
- 南京大学:《面向对象技术 OOT》课程教学资源(PPT课件讲稿)实习项目概述.ppt
- 南京大学:《面向对象技术 OOT》课程教学资源(实习指南)医院预约挂号系统.docx
- 南京大学:《面向对象技术 OOT》课程教学资源(PPT课件讲稿)OOT实习指南.pptx
- 南京大学:《面向对象技术 OOT》课程教学资源(教材电子版)33 O-O programming and Ada.pdf
- 南京大学:《面向对象技术 OOT》课程教学资源(教材电子版)06 Abstract data types.pdf
- 南京大学:《面向对象技术 OOT》课程教学资源(教材电子版)27 Object-oriented analysis.pdf
- 南京大学:《面向对象技术 OOT》课程教学资源(教材电子版)E Bibliography.pdf
- 南京大学:《面向对象技术 OOT》课程教学资源(教材电子版)07 The static structure:classes.pdf
- 南京大学:《面向对象技术 OOT》课程教学资源(教材电子版)30 Concurrency, distribution, client-server and the Internet.pdf
- 南京大学:《面向对象技术 OOT》课程教学资源(教材电子版)11 Design by Contract:building reliable software.pdf
- 南京大学:《面向对象技术 OOT》课程教学资源(教材电子版)02 Criteria of object orientation.pdf
- 南京大学:《面向对象技术 OOT》课程教学资源(教材电子版)34 Emulating object technology in non-O-O environments.pdf