02 C_设计模式-面向对象设计原则.ppt
《02 C_设计模式-面向对象设计原则.ppt》由会员分享,可在线阅读,更多相关《02 C_设计模式-面向对象设计原则.ppt(41页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、www.ChinaSA.infoDDesign esign PPatternsatterns面向对象设计原则面向对象设计原则刘 伟(Sunny)weiliu_www.ChinaSA.info大纲w 面向对象设计原则概述w 单一职责原则w 开闭原则w 里氏代换原则w 依赖倒转原则w 接口隔离原则w 合成复用原则w 迪米特法则www.ChinaSA.info面向对象设计原则概述w 可维护性(Maintainability):指软件能够被理解、改正、适应及扩展的难易程度w 可复用性(Reusability):指软件能够被重复使用的难易程度w 面向对象设计的目标之一在于支持可维护性复用,一方面需要实现
2、设计方案或者源代码的复用,另一方面要确保系统能够易于扩展和修改,具有良好的可维护性www.ChinaSA.info面向对象设计原则概述w 面向对象设计原则为支持可维护性复用而诞生w 指导性原则,非强制性原则w 每一个设计模式都符合一个或多个面向对象设计原则,面向对象设计原则是用于评价一个设计模式的使用效果的重要指标之一www.ChinaSA.info面向对象设计原则概述设计原则名称 定 义 使用频率单一职责原则(Single Responsibility Principle,SRP)一 个 对 象 应 该 只 包 含 单 一 的 职 责,并 且 该 职 责 被完整地封装在一个类中开闭原则(Op
3、en-Closed Principle,OCP)软件实体应当对扩展开放,对修改关闭 里氏代换原则(Liskov Substitution Principle,LSP)所 有 引 用 基 类 的 地 方 必 须 能 透 明 地 使 用 其 子 类 的对象依赖倒转原则(Dependence Inversion Principle,DIP)高层模块不应该依赖低层模块,它们都应该依赖抽象。抽象不应该依赖于细节,细节应该依赖于抽象接口隔离原则(Interface Segregation Principle,ISP)客户端不应该依赖那些它不需要的接口 合成复用原则(Composite Reuse Prin
4、ciple,CRP)优 先 使 用 对 象 组 合,而 不 是 继 承 来 达 到 复 用 的 目的迪米特法则(Law of Demeter,LoD)每 一 个 软 件 单 位 对 其 他 的 单 位 都 只 有 最 少 的 知 识,而且局限于那些与本单位密切相关的软件单位www.ChinaSA.info单一职责原则 w 单一职责原则定义 单一职责原则是最简单的面向对象设计原则,用于控制类的粒度大小单一职责原则:一个对象应该只包含单一的职责,并且该职责被完整地封装在一个类中。Single Responsibility Principle(SRP):Every object should hav
5、e a single responsibility,and that responsibility should be entirely encapsulated by the class.www.ChinaSA.info单一职责原则 w 单一职责原则定义 就一个类而言,应该仅有一个引起它变化的原因There should never be more than one reason for a class to change.www.ChinaSA.info单一职责原则 w 单一职责原则分析 一个类(大到模块,小到方法)承担的职责越多,它被复用的可能性就越小 当一个职责变化时,可能会影响其他职
6、责的运作 将这些职责进行分离,将不同的职责封装在不同的类中 将不同的变化原因封装在不同的类中 单一职责原则是实现高内聚、低耦合的指导方针www.ChinaSA.info单一职责原则 w 单一职责原则实例 实例说明某 软 件 公 司 开 发 人 员 针 对CRM(Customer Relationship Management,客 户关 系 管 理)系 统 中 的 客 户 信 息 图 表 统 计 模 块 提 出 了 如 图2-1 所 示 的 初 始 设 计 方案。图2-1 初始设计方案结构图在 图2-1 中,GetConnection()方 法 用 于 连 接 数 据 库,FindCustome
7、rs()用 于 查询所有的客户信息,CreateChart()用于创建图表,DisplayChart()用于显示图表。现使用单一职责原则对其进行重构。www.ChinaSA.info单一职责原则 w 单一职责原则实例 实例解析 www.ChinaSA.info开闭原则w 开闭原则定义 开闭原则是面向对象的可复用设计的第一块基石,是最重要的面向对象设计原则开闭原则:软件实体应当对扩展开放,对修改关闭。Open-Closed Principle(OCP):Software entities should be open for extension,but closed for modificati
8、on.www.ChinaSA.info开闭原则w 开闭原则分析 开闭原则由Bertrand Meyer 于1988 年提出 在开闭原则的定义中,软件实体可以是一个软件模块、一个由多个类组成的局部结构或一个独立的类 开闭原则是指软件实体应尽量在不修改原有代码的情况下进行扩展www.ChinaSA.info开闭原则w 开闭原则分析 抽象化是开闭原则的关键 相对稳定的抽象层+灵活的具体层 对可变性封装原则(Principle of Encapsulation of Variation,EVP):找到系统的可变因素并将其封装起来www.ChinaSA.info里氏代换原则w 里氏代换原则定义 里氏代换
9、原则:如果对每一个类型为S 的对象o1,都有类型为T 的对象o2,使得以T 定义的所有程序P 在所有的对象o1都代换o2时,程序P 的行为没有变化,那么类型S 是类型T 的子类型。Liskov Substitution Principle(LSP):If for each object o1 of type S there is an object o2 of type T such that for all programs P defined in terms of T,the behavior of P is unchanged when o1 is substituted for o2
10、 then S is a subtype of T.里氏代换原则:所有引用基类的地方必须能透明地使用其子类的对象。Liskov Substitution Principle(LSP):Functions that use pointers or references to base classes must be able to use objects of derived classes without knowing it.www.ChinaSA.info里氏代换原则 w 里氏代换原则分析 里氏代换原则由2008 年图灵奖得主、美国第一位计算机科学女博士、麻省理工学院教授Barbara L
11、iskov 和卡内基.梅隆大学Jeannette Wing 教授于1994 年提出芭芭拉 利斯科夫(Barbara Liskov),美国计算机科学家,2008 年图灵奖得主,2004 年约翰.冯诺依曼奖得主,美国工程院院士,美国艺术与科学院院士,美国计算机协会会士。现任麻省理工学院电子电气与计算机科学系教授,她是美国第一个计算机科学女博士。www.ChinaSA.info里氏代换原则 w 里氏代换原则分析 在软件中将一个基类对象替换成它的子类对象,程序将不会产生任何错误和异常,反过来则不成立。如果一个软件实体使用的是一个子类对象的话,那么它不一定能够使用基类对象 在程序中尽量使用基类类型来对对
12、象进行定义,而在运行时再确定其子类类型我喜欢动物 我喜欢狗 因为狗是动物 www.ChinaSA.info依赖倒转原则 w 依赖倒转原则定义依赖倒转原则:高层模块不应该依赖低层模块,它们都应该依赖抽象。抽象不应该依赖于细节,细节应该依赖于抽象。Dependency Inversion Principle(DIP):High level modules should not depend upon low level modules,both should depend upon abstractions.Abstractions should not depend upon details,d
13、etails should depend upon abstractions.www.ChinaSA.info依赖倒转原则 w 依赖倒转原则定义 要针对接口编程,不要针对实现编程Program to an interface,not an implementation.www.ChinaSA.info依赖倒转原则 w 依赖倒转原则分析 依赖倒转原则是Robert C.Martin 在1996 年为“C+Reporter”所写的专栏Engineering Notebook 的第三篇,后来加入到他在2002 年出版的经典著作Agile Software Development,Principles
14、,Patterns,and Practices 一书中www.ChinaSA.info依赖倒转原则 w 依赖倒转原则分析 在程序代码中传递参数时或在关联关系中,尽量引用层次高的抽象层类,即使用接口和抽象类进行变量类型声明、参数类型声明、方法返回类型声明,以及数据类型的转换等 在程序中尽量使用抽象层进行编程,而将具体类写在配置文件中www.ChinaSA.info依赖倒转原则 w 依赖倒转原则分析 针对抽象层编程,将具体类的对象通过依赖注入(Dependency Injection,DI)的方式注入到其他对象 构造注入 设值注入(Setter 注入)接口注入www.ChinaSA.info依赖倒
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 02 C_设计模式-面向对象设计原则 C_ 设计 模式 面向 对象 原则
限制150内