`
yuxuan1215
  • 浏览: 14663 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

面向对象设计原则之开闭原则(OCP)

 
阅读更多

1 什么是开闭原则

开-闭原则(Open_Closed Principle):一个软件实体应当对扩展开放,对修改关闭。(SoftWare entities should be open for extension,but closed formodification)

也就是说设计一个模块的时候,应当使这个模块可以被不修改的前提下被扩展。


2 如何实现开闭原则(对扩展开放,对修改关闭)

实现开闭原则可以从抽象化对可变性封装两个方面考虑。

一、一种可变性不应当散落在代码的很多角落里,而应当被封装在一个对象里面。对这众多的同一层次上的可变性进行抽象得到它们的抽象类,使这些同一层次上的可变性是 这个抽象类的具体子类。这个抽象类不可更改。

二、当系统需要增加一个可变性的时候,只需继承实现该抽象类即可达到这些不同可变性之间能够相互替换。

从以上两点我们可以看出第一点满足了开闭原则的对修改关闭,第二点满足了对扩展开放。


等看到设计模式中的策略模式时就刻意很容易理解,策略模式讲的就是有一组算法,将每一个算法封装起来,使得它们之间刻意相互替换,策略模式就是开闭原则的一个范例。


3 开闭原则与其他几大原则的关系

开闭原则是面向对象复用的基石,我们设计系统要达到到的目标就是对修改关闭对扩展开放。

里氏代换原则:里氏代换原则是对开闭原则的补充,开闭原则告诉我们任何基类出现的地方子类一定可以出现,开闭原则就是将关键步骤就是抽象化,在子类中实现扩展。

依赖倒转:讲的是要依赖于抽象而不要依赖于实现,它是实现开闭原则的手段,违反依赖倒转的原则就不可能达到开闭原则的要求

单一职责原则:类中的职责要单一,不能将不同的可变性封装在一个子类当中。

接口隔离原则:它讲的是应当为客户端提供尽可能小的单独接口,而不要提供打的接口,它使软件系统在功能扩展的过程中不会将修改的压力扩展到其他对象中。

迪米特法则:它将的是一个软件实体应当尽可能少的与其他实体发生作用。遵守迪米特法则会相对容易地做到对修改关闭。

合成/聚合复用原则:它讲的是优先使用组合而非继承。它是与里氏代换原则相辅相成的


4 开闭原则的优越性

一、提供扩展新的行为,满足对软件新的需求,使软件系统具有一定的适应性和灵活性。

二、对抽象层不能修改,保证了系统的稳定性和延续性。
分享到:
评论

相关推荐

    面型对象设计原则——开闭原则(OCP)的Demo+静态结构图

    开闭原则(Open-Closed Principle,简称OCP)是面向对象设计中的一个核心原则,它在软件工程领域具有举足轻重的地位。该原则由 Bertrand Meyer 在其著作《Object-Oriented Software Construction》中提出,旨在提高...

    面向对象设计原则.ppt

    面向对象设计原则是软件开发中至关重要的一环,它关乎到代码的可维护性、扩展性和复用性。本文将深入探讨这些原则,并结合实例来解释它们的重要性。 首先,我们需要理解面向对象不仅仅是编程语言中的概念,如封装、...

    面向对象设计原则

    总的来说,面向对象设计原则如OCP和LSP是构建健壮、灵活的软件系统的基础。理解并遵循这些原则,可以帮助开发者编写出更高质量的代码,提升软件的可维护性和可扩展性。在实际开发中,应结合具体需求灵活应用这些原则...

    面向对象七大基本设计原则.pdf

    2. 开闭原则(Open/Closed Principle, OCP):软件实体应当对扩展开放,对修改关闭。这意味着软件系统应该能够在不修改现有代码的基础上进行功能的扩展。 3. 里氏替换原则(Liskov Substitution Principle, LSP):...

    面向对象设计原则英文文章

    首先,我们来了解四个基础的面向对象设计原则:单一职责原则(SRP)、开放封闭原则(OCP)、里氏替换原则(LSP)和接口隔离原则(ISP)。 1. 单一职责原则(Single Responsibility Principle, SRP):一个类或模块...

    面向对象设计原则和设计模式的概念

    面向对象设计原则与设计模式是软件工程领域的重要组成部分,它们为构建高质量、可维护和可扩展的软件系统提供了指导方针。下面将详细阐述面向对象设计原则及其如何促进软件的复用,以及设计模式的概念。 ### 面向...

    面向对象设计原则.pdf

    ### 面向对象设计原则详解 面向对象设计原则是一系列指导软件开发人员构建高质量、易于维护和扩展的软件系统的准则。这些原则旨在帮助开发者创建更健壮、更灵活的系统,减少代码间的耦合度,并提高代码的重用性和...

    面向对象设计原则(SRP,OCP,LSP,DIP,ISP)

    面向对象 设计原则 单一职责原则--SRP 开放封闭原则--OCP Liskov替换原则--LSP 依赖倒置原则--DIP 接口隔离原则--ISP

    面向对象设计原则解析

    面向对象设计原则是软件开发中的一种核心思想,它为创建可维护、可扩展且易于理解的代码提供了指导方针。在本文中,我们将深入探讨这些原则,帮助你更好地理解和应用它们。 1. **单一职责原则(Single ...

    UML简介与面向对象的设计原则

    面向对象设计原则与UML简介 UML,全称为统一建模语言,是软件开发领域中一种广泛应用的标准化建模工具。由Object Management Group(OMG)于1997年发布,它提供了可视化的表示方式,用于描述、指定、构建和记录软件...

    Java Web设计模式之OCP(开闭原则)

    开闭原则(Open-Closed Principle,OCP)是软件工程中的一个基本原则,由Bertrand Meyer在1988年提出,它是面向对象设计的核心之一。这个原则规定了软件实体(如类、模块、函数等)应该对扩展开放,对修改关闭。这...

    C++设计模式课件2_面向对象设计原则.pdf

    ### C++设计模式课件2_面向对象设计原则 #### 面向对象设计原则概述 面向对象设计原则是软件工程领域中为了提高代码质量、增强软件系统的可维护性和可扩展性而制定的一系列指导原则。这些原则有助于开发人员更好地...

    C#面向对象设计模式纵横谈(1):面向对象设计模式与原则

    面向对象设计模式是软件开发中的重要工具,它们是经过时间考验和广泛实践验证的设计解决方案,旨在提高代码的可重用性、灵活性和可维护性。...因此,学习和掌握面向对象设计模式是每个C#程序员必备的技能之一。

    C#面向对象设计模式纵横谈(1):面向对象设计模式与原则.zip

    1. **设计原则**:面向对象设计模式的基础,如单一职责原则(SRP)、开放封闭原则(OCP)、里氏替换原则(LSP)、接口隔离原则(ISP)和依赖倒置原则(DIP)。这些原则指导我们编写可维护、可扩展的代码。 2. **常见设计模式*...

    面向对象设计原则与设计模式

    2. 开闭原则(Open/Closed Principle, OCP): 软件实体(如类、模块、函数等)对扩展开放,对修改关闭。这意味着在不改变原有代码的基础上,可以增加新功能。 3. 里氏替换原则(Liskov Substitution Principle, ...

    java面向对象设计的六大原则

    以下将详细介绍面向对象设计的六大原则:单一职责原则(Single Responsibility Principle, SRP)、开放封闭原则(Open-Closed Principle, OCP)、里氏替换原则(Liskov Substitution Principle, LSP)、依赖倒置原则...

    面向对象的设计原则详解

    面向对象设计原则是软件开发中的核心指导思想,它们旨在提高代码的可维护性、可扩展性和可重用性。在面向对象设计(OOD)中,遵循这些原则可以帮助我们构建更加稳定、灵活的系统。以下是对这些原则的详细解释: 1. ...

Global site tag (gtag.js) - Google Analytics