`

OO的五大原则

 
阅读更多

OO的五大原则是指SRP、OCP、LSP、DIP、ISP。

 

1. SRP(Single Responsibility Principle 单一职责原则) 

单一职责很容易理解,也很容易实现。所谓单一职责,就是一个设计元素只做一件事。什么是“只做一件事”?简单说就是少管闲事。现实中就是如此,如果要你专心做一件事情,任何人都有信心可以做得很出色。 

 

2. OCP 开闭原则,很简单,一句话:“Closed for Modification; Open for Extension”——“对变更关闭;对扩展开放”。开闭原则其实没什么好讲的,我将其归结为一个高层次的设计总则。OCP的动机很简单:软件是变化的。不论是优质的设计还是低劣的设计都无法回避这一问题。OCP说明了软件设计应该尽可能地使架构稳定而又容易满足不同的需求。 为什么要OCP?答案也很简单——重用。 

 

3. LSP(Liskov Substitution Priciple) 里氏替换原则 

 Liskov于1987年提出了一个关于继承的原则“Inheritance should ensure that any property proved about supertype objects also holds for subtype objects.”——“继承必须确保超类所拥有的性质在子类中仍然成立。”也就是说,当一个子类的实例应该能够替换任何其超类的实例时,它们之间才具有is-A关系。 该原则称为Liskov Substitution Principle——里氏替换原则。 

我们来研究一下LSP的实质。学习OO的时候,我们知道,一个对象是一组状态和一系列行为的组合体。状态是对象的内在特性,行为是对象的外在特性。LSP所表述的就是在同一个继承体系中的对象应该有共同的行为特征。

LSP讲的是基类和子类的关系。只有当这种关系存在时,里氏代换关系才存在。如果两个具体的类A,B之间的关系违反了LSP的设计,(假设是从B到A的继承关系)那么根据具体的情况可以在下面的两种重构方案中选择一种。 创建一个新的抽象类C,作为两个具体类的超类,将A,B的共同行为移动到C中来解决问题。 从B到A的继承关系改为委派关系。 

 

4.DIP 依赖倒置原则 

依赖倒置(Dependence Inversion Principle)原则讲的是:要依赖于抽象,不要依赖于具体。 

简单的说,依赖倒置原则要求客户端依赖于抽象耦合。原则表述: 

抽象不应当依赖于细节;细节应当依赖于抽象; 

要针对接口编程,不针对实现编程。 

 

5.ISP (Interface Segregation Principle)接口隔离原则 

使用多个专门的接口比使用单一的总接口要好。广义的接口:一个接口相当于剧本中的一种角色,而此角色在一个舞台上由哪一个演员来演则相当于接口的实现。因此一个接口应当简单的代表一个角色,而不是一个角色。,如果系统设计多个角色的话,则应当每一个角色都由一个特定的接口代表。狭义的接口(Interface):接口隔离原则讲的就是同一个角色提供宽、窄不同的接口,以对付不同的客户端。

分享到:
评论

相关推荐

    面向对象编程,OO设计的五大原则

    在本文中,我们将详细探讨OOP设计中的五大原则:单一职责原则(Single Responsibility Principle,简称 SRP)、开放封闭原则(Open-Closed Principle,简称 OCP)、里氏替换原则(Liskov Substitution Principle,...

    OO设计五个原则.pdf

    本文将详细解析这五大原则之一——开闭原则(Open-Closed Principle,简称OCP),并探讨其在软件开发过程中的应用与实践。 ### 开闭原则:面向对象设计的核心 开闭原则是由Bertrand Meyer于1988年提出的,它强调...

    oo design principles

    以下是五个主要的OO设计原则及其详细解释: 1. 单一职责原则(Single Responsibility Principle, SRP) SRP由Robert Martin提出,指出一个类应该只有一个改变的原因。这意味着类的职责应该高度凝聚,只负责单一的...

    浅谈java中OO的概念和设计原则(必看)

    下面我们将从OO的设计基础、面向对象设计模式、设计目标、设计原则五大方面来浅谈Java中OO的概念和设计原则。 一、OO的设计基础 OO是基于对象概念,以对象为中心,以类和继承为构造机制,充分利用接口和多态提供...

    OO方法、RUP与UML建模(讲义)

    OO方法,全称为面向对象的方法,是一种以对象为中心的软件开发方法论,它结合了数据和操作这些数据的函数,通过抽象、封装、模块化和分层等原则,以提高软件的可维护性和复用性。面向对象分析(OOA)和面向对象设计...

    c++ 面向对象设计五大原则

    面向对象设计的主要任务就是类的设计,不少面向对象(OO)的先驱和前辈已经提出了很多关于类的设计原则,用于指导OOP,其中就包括类设计的五项基本原则。 1.单一职责原则(Single Resposibility Principle,SRP) ...

    面向对象的设计原则 doc

    本文将详细探讨面向对象设计中的六大基本原则,并结合部分文本内容进行深入分析。 #### 一、开闭原则(Open-Closed Principle, OCP) **定义**:开闭原则指出,软件实体(如类、模块等)应该对扩展开放,对修改...

    C++OOAD的设计原则

    本文将详细介绍 LSP、OCP、SRP、ISP 和 DIP 这五大设计原则,并结合 UML 图表进行说明。 #### 1. LSP:Liskov 替换原则 (The Liskov Substitution Principle) Liskov 替换原则由 Barbara Liskov 在 1987 年提出,...

    Reverse Engineering of OO Code Monographs in CS

    对于面向对象(Object-Oriented,简称OO)的代码来说,逆向工程可以帮助开发者更好地理解和重构现有系统,这对于维护大型软件项目、保护知识产权以及提高软件质量等方面都有着不可替代的作用。 #### 二、面向对象...

    head_first_design_patterns.pdf Head First 设计模式(英文原版 非扫描)

    千万不要轻视这些OO原则,因为每个设计模式背后都包含了几个OO原则的概念。很多时候,在设计时有两难的情况,这时候我们必须回归到OO原则,以方便判断取舍。可以这么说:OO原则是我们的目标,而设计模式是我们的做法...

    vc编码规范.pdf

    - **基本原则**:公共控件或类应考虑OO思想,减少外界联系,考虑独立性或封装性。 - **目的**:提高代码的可扩展性和可维护性。 **3. 使用模板** - **基本原则**:公共控件或类应建立使用模板。 - **目的**:...

    Head.First设计模式_PDF.part1

    千万不要轻视这些OO原则,因为每个设计模式背后都包含了几个OO原则的概念。很多时候,在设计时有两难的情况,这时候我们必须回归到OO原则,以方便判断取舍。可以这么说:OO原则是我们的目标,而设计模式是我们的做法...

    面向对象_在线培训学习资料

    SOLID 是五个基本原则的首字母缩写,包括单一职责原则(SRP)、开闭原则(OCP)、里氏替换原则(LSP)、接口隔离原则(ISP)和依赖倒置原则(DIP)。遵循这些原则,可以使代码更易于理解和维护。 本在线培训学习...

    万山垃圾渗滤液处理工程初步设计方案.docx

    《万山垃圾渗滤液处理工程初步设计方案》是关于生活垃圾处理厂污水处理站工程的重要文档,由常州河海水环境工程有限公司于二OO五年五月编制。该设计方案涵盖了多项关键技术和设计原则,旨在有效地处理垃圾渗滤液,...

    UML2.0培训资料

    - **了解OO的设计原则及一些典型的设计模式**:掌握常用的设计原则,例如单一职责原则、开放封闭原则等,并熟悉常见的设计模式,如单例模式、工厂模式等。 #### 三、课程结构 课程结构分为以下几个部分: - **...

    1-1面向对象技术基础-作业要求[收集].pdf

    学生需要阅读至少3篇关于面向对象(OO)的文章或书籍,然后撰写一篇小论文,可以是对OO技术的综述、对特定问题的研究,或者对OO特点的探讨。论文应包含标题、中英文摘要、概述、正文(1-2章)和结论,且必须注明...

    深入浅出面向对象的分析与设计1

    #### 五、面向对象设计的原则 1. **单一职责原则(SRP)**:一个类应该只有一个引起它变化的原因。 2. **开放封闭原则(OCP)**:软件实体应该是可扩展的,但不可修改的。 3. **里氏替换原则(LSP)**:子类型必须能够...

    设计模式入门指导

    在设计模式的学习中,SOLID原则是重要的指导思想,它包含了五个面向对象设计的基本原则: - 单一职责原则(Single Responsibility Principle, SRP):一个类应该只有一个引起它变化的原因。 - 开闭原则(Open/Closed...

    如何理解面向对象的概念

    - **设计模式的五大原则**(SOLID)是面向对象设计的基础: - 单一职责原则(Single Responsibility Principle) - 开放封闭原则(Open/Closed Principle) - 里氏替换原则(Liskov Substitution Principle) - ...

Global site tag (gtag.js) - Google Analytics