(48)--14-3 面向对象设计原则 开闭原则 面向对象与UML.pdf
《(48)--14-3 面向对象设计原则 开闭原则 面向对象与UML.pdf》由会员分享,可在线阅读,更多相关《(48)--14-3 面向对象设计原则 开闭原则 面向对象与UML.pdf(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 面向对象与面向对象与UML Object-Oriented and UML 面向对象设计原则面向对象设计原则 Object-Oriented Design Principles -3-3-面向对象的基本设计原则面向对象的基本设计原则(1)LSP:Liskov(里氏里氏)替换原则替换原则 Liskov Substitution Principle(2)OCP:开放:开放-封闭原则封闭原则 Open-Close Principle(3)SRP:单一职责原则:单一职责原则 Single Responsibility Principle(4)ISP:接口隔离原则:接口隔离原则 Interface S
2、egregation Principle (5)DIP:依赖倒置原则:依赖倒置原则 Dependency Inversion Principle(6)CARP:组合组合/聚合复用原则聚合复用原则 Composite/Aggregate Reuse Principle(7)LOD(LKP):迪米特法则迪米特法则(最少知道原则最少知道原则)Law of Demeter(Least Knowledge Principle)2.OCP(The Open-Close Principle)开放开放-封闭原则、开闭原则)封闭原则、开闭原则)“Closed for Modification;Open for
3、Extension”是所有面向对象原则的核心。是所有面向对象原则的核心。设计一个模块(类)时,应当使该模块(类)在不被修改的前提下被扩设计一个模块(类)时,应当使该模块(类)在不被修改的前提下被扩展,即可在不必修改源代码的情况下改变该模块的行为。展,即可在不必修改源代码的情况下改变该模块的行为。特征:特征:对于扩展是开放的(对于扩展是开放的(Open for extension):):模块的行为可以扩展,当应模块的行为可以扩展,当应用的需求改变时,可以对模块进行扩展,以满足新的需求。即:可以改变用的需求改变时,可以对模块进行扩展,以满足新的需求。即:可以改变模块的功能。模块的功能。对于更改是封
4、闭的(对于更改是封闭的(Closed for modification):):对模块行为扩展时,不对模块行为扩展时,不必改动模块原有的源代码。(并非绝对,但是应该是最小限度)必改动模块原有的源代码。(并非绝对,但是应该是最小限度)为什么需要遵循为什么需要遵循OCP开闭原则开闭原则 现实世界是变化的(而且变化很快),软件是对现实的抽象。现实世界是变化的(而且变化很快),软件是对现实的抽象。-软件必须能够扩展,对扩展是开放的软件必须能够扩展,对扩展是开放的。如果任何修改都需要改变已经存在的代码,那么可能导致牵一发动如果任何修改都需要改变已经存在的代码,那么可能导致牵一发动全身现象,进而导致雪崩效应
5、,使软件质量显著下降。全身现象,进而导致雪崩效应,使软件质量显著下降。-尽量减尽量减少更改,对更改是封闭的。少更改,对更改是封闭的。OCP说明了软件设计应该尽可能地使架构稳定而又容易满足不同的说明了软件设计应该尽可能地使架构稳定而又容易满足不同的需求。需求。OCP开闭原则开闭原则的地位的地位 软件设计本身所追求的目标就是软件设计本身所追求的目标就是封装变化、降低耦合封装变化、降低耦合,而,而开放封闭原开放封闭原则则正是对这一目标的最直接体现。其它的设计原则,很多时候是为实正是对这一目标的最直接体现。其它的设计原则,很多时候是为实现这一目标服务的。现这一目标服务的。LSP是是OCP成为可能的主要
6、原则之一,对于成为可能的主要原则之一,对于LSP的违反也潜在的违反的违反也潜在的违反了了OCP。Liskov替换原则实现最佳的、正确的继承层次,替换原则实现最佳的、正确的继承层次,正是子类型的可正是子类型的可替换性才使得使用基类类型的模块在无需修改的情况下就可以用替换性才使得使用基类类型的模块在无需修改的情况下就可以用子类类型的模块进行扩展。子类类型的模块进行扩展。OCP开闭原则的地位开闭原则的地位 绝大部分的绝大部分的设计模式设计模式都符合都符合开闭原则开闭原则,在对每一个模式进行优缺点评,在对每一个模式进行优缺点评价时都会以价时都会以开闭原则开闭原则作为一个重要的评价依据,以判断基于该模式
7、设作为一个重要的评价依据,以判断基于该模式设计的系统是否具备良好的灵活性和可扩展性。计的系统是否具备良好的灵活性和可扩展性。总结:总结:开闭原则是面向对象设计的核心所在。遵循这个原则可以带来开闭原则是面向对象设计的核心所在。遵循这个原则可以带来灵活性、可重用性和可维护性灵活性、可重用性和可维护性,设计出扩展性良好的系统设计出扩展性良好的系统。其它设计。其它设计原则(里氏替换原则、依赖倒转原则、组合原则(里氏替换原则、依赖倒转原则、组合/聚合复用原则、迪米特聚合复用原则、迪米特法则、接口隔离原则)是实现开闭原则的手段和工具。法则、接口隔离原则)是实现开闭原则的手段和工具。OCP的关键在于抽象的关
8、键在于抽象 抽象化抽象化是开闭原则的关键。是开闭原则的关键。抽象技术:抽象技术:抽象类抽象类abstract class,接口接口Interface 抽象预见了可能的所有扩展(闭)抽象预见了可能的所有扩展(闭)由抽象可以随时导出新的类(开)由抽象可以随时导出新的类(开)ServerClientClientInterfaceClientServerServerClientInterfaceClient OCP开闭原则的关键在于开闭原则的关键在于抽象抽象 例例1-1:既不开放也不封闭的:既不开放也不封闭的Client。ServerClientclass Client private:Server&
9、s;public:Client(Server&SER):s(SER)void useServer()s.ServerFunc();class Server private:int serverData;public:void ServerFunc()/;存在的问题存在的问题:Client和和Server都是具体类,接口与实现没有实现分离。如果我们想要让都是具体类,接口与实现没有实现分离。如果我们想要让Client调用一个新的调用一个新的Server1类,那么我们不得不修改类,那么我们不得不修改Client的源代码。从而的源代码。从而带来编译、链接、部署等一系列的问题。带来编译、链接、部署等一系
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 48-14-3 面向对象设计原则 开闭原则 面向对象与UML 48 14 面向 对象 设计 原则 开闭 UML
限制150内