`

第四章 开放封闭原则OCP

 
阅读更多
开放封闭原则,是说软件实体(类、模块、函数等等)应该可以扩展,但是不可修改。

对于扩展是开放的
对于修改是封闭的

无论模块是多么的封闭,都会存在一些无法与之封闭的变化。既然不可能完全封闭,设计人员必须对于他设计的模块应该对哪种变化封闭做出选择。他必须先猜测出最有可能发生的变化种类,然后构造抽象来隔离那些变化。

等到发生变化时立即采取行动。

在我们最初编写代码时,假设变化不会发生。当变化发生时,我们就创建抽象来隔离以后发生的同类变化。
面对需求,对程序的改动是通过增加新代码进行的,而不是更改现有的代码。
我们希望的是在开发工作展开不久就知道可能发生的变化。查明可能发生的变化所等待的时间越长,要创建正确的抽象就越困难。

开放封闭原则是面向对象设计的核心所在。遵循这个原则可以带来面向对象技术所声称的巨大好处,也就是可维护、可扩展、可复用、灵活型好。开发人员应该仅对程序中呈现出频繁变化的那些部分做出抽象,然而,对于应用程序中的每个部分都刻意地进行抽象同样不是一个好主意。拒绝不成熟的抽象和抽象本身一样重要。

原则性的东西。

分享到:
评论

相关推荐

    敏捷软件开发:原则、模式与实践

    第9章 开放—封闭原则(OCP) 第10章 Liskov替换原则(LSP) 第11章 依赖倒置原则(DIP) 第12章 接口隔离原则(ISP) 第三部分 薪水支付案例研究 第13章 COMMAND模式和ACTIVE OBJECT模式 第14章 TEMPLATE METHOD模式和...

    敏捷软件开发:原则、模式与实践.pdf

    第九章 开放—封闭原则(OCP) 9.1 开放—封闭原则(OCP) 9.2 描述 9.3 关键是抽象 9.4 结论 参考文献 第十章 Liskov替换原则(LSP) 10.1 Liskov替换原则(LSP) 10.2 一个违反LSP的简单例子 10.3 正方形和矩形,...

    敏捷软件开发原则、模式与实践 C#版

    第一部分 敏捷开发 第1章 敏捷实践 第2章 极限编程概述 第3章 计划 第4章 测试 第5章 重构 第6章 一次编程实践 第二部分 敏捷设计 第7章 什么是敏捷设计 第8章 SRP:单一职责原则 第9章 OCP:开放-封闭原则 第10章 ...

    敏捷软件开发:原则、模式与实践.pdf

    第9章 开放—封闭原则(OCP) 第10章 Liskov替换原则(LSP) 第11章 依赖倒置原则(DIP) 第12章 接口隔离原则(ISP) 第三部分 薪水支付案例研究 第13章 COMMAND模式和ACTIVE OBJECT模式 第14章 TEMPLATE METHOD模式和...

    OCP 1Z0-051讲解视频.zip

    "开闭原则"虽然通常与软件设计原则相关,但在OCP 1Z0-051的上下文中,可能是指课程设计遵循了这个原则,即课程内容对于扩展是开放的,但对修改是封闭的,意味着学习者可以通过增加新知识来扩展他们的技能,而无需对...

    软件工程中的软件设计原则与模式1.pptx

    #### 第三章:开放封闭原则(OCP) ##### OCP原则原理剖析 **开放封闭原则**(OCP)主张软件实体应该是可扩展的,但不应被修改。这意味着当我们需要添加新功能时,应该通过扩展现有实体而不是修改它们来实现。 - ...

    设计模式六大原则 .docx

    2、开放封闭原则(OCP) 开放封闭原则强调,软件实体应易于扩展,但不易修改。当需求变更时,应通过添加新代码而非修改现有代码来适应变化。例如,使用策略模式,可以通过增加新的策略类来扩展功能,而不需要改动...

    Java设计模式课件.rar

    这六大原则包括单一职责原则(SRP)、开放封闭原则(OCP)、里氏替换原则(LSP)、接口隔离原则(ISP)、依赖倒置原则(DIP)以及迪米特法则(LoD)。这些原则是面向对象设计的核心,它们指导我们编写出更加灵活、可...

    Java第三章习题

    2. 开放封闭原则(OCP):对扩展开放,对修改封闭。 3. 里氏替换原则(LSP):子类可以替换父类。 4. 接口隔离原则(ISP):客户端不应该依赖于它不需要的接口。 5. 依赖倒置原则(DIP):高层模块不应该依赖于低层...

    设计原则(责任链,桥接,适配器,单例,命令)

    此外,"六大原则"通常指的是面向对象设计的六大基础原则,包括单一职责原则(SRP)、开放封闭原则(OCP)、里氏替换原则(LSP)、接口隔离原则(ISP)、依赖倒置原则(DIP)和合成复用原则(CRP)。这些原则是编写高...

    软件工程中的软件设计原则与模式教程1.pptx

    2. **开放封闭原则(Open/Closed Principle, OCP)** - 概念:软件实体(类、模块、函数等)应该是可扩展的,但不可修改的。 - 实践意义:通过接口或抽象类来定义行为,实现具体功能时通过继承或组合的方式,可以在...

    企业级应用软件架构开发过程与实践

    在设计架构时,我们通常遵循一些基本原则,如单一职责原则(SRP)、开放封闭原则(OCP)、里氏替换原则(LSP)、依赖倒置原则(DIP)和接口隔离原则(ISP)。这些原则有助于提高代码的可读性、可测试性和可扩展性。 ...

    UML for Java Programmers中文版

    本章系统地介绍了单一职责原则(SRP)、开放-封闭原则(OCP)、Liskov替换原则(LSP)、依存关系倒置原则(DIP)、接口隔离原则(ISP)等核心原则。遵循这些原则,可以帮助Java程序员构建更加灵活、扩展性和可复用性...

    adaptive code in C sharp

    **第六章** 讨论了开放/封闭原则(OCP)。OCP指的是软件实体应该是可扩展的但不可修改的。这意味着可以通过增加新的代码来扩展软件的功能,而不需要改变现有的代码。本章通过示例介绍了如何设计符合OCP的系统,强调了...

    面向对象设计经验

    - **开放封闭原则**(Open-Closed Principle, OCP)认为软件实体应该是对扩展开放的,而对修改封闭的。第10条原则提到:“扩展一个类(也应该)为开放的。”这强调了在不改变现有代码的前提下,能够通过扩展类的方式...

    Java面向对象程序设计杨晓燕面向对象基本原则和模式.pptx

    3. 开放-封闭原则(OCP):设计应该是对扩展开放,对修改关闭,允许添加新功能而不改变已有代码。 4. 里氏代换原则(LSP):子类应当可以替换其基类,且不影响程序的正确性,保证了多态性。 此外,设计模式是解决...

    软件工程中的软件设计与重构原则.pptx

    - **开闭原则(Open/Closed Principle, OCP)**:软件实体应该是对扩展开放的,但对修改封闭。即可以通过添加新代码来扩展功能,而不需要修改已有的代码。 - **里氏替换原则(Liskov Substitution Principle, LSP)*...

Global site tag (gtag.js) - Google Analytics