`
zaife
  • 浏览: 40351 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

开放---封闭原则(OCP)

阅读更多
注:摘自《敏捷软件开发:原则、模式与实践》(Robert C. Martin)   
遵循开放封闭原则设计出的模块具有两个主要的特征。
   
    1、“对于扩展是开放的”(Open for extension)
        这意味着模块的行为是可以扩展的。当应用的需求改变时,我们可以对模块进行扩展,使其具有满足那些改变的新行为。换句话说,我们可以改变模块的功能。
   
    2、“对于更改是封闭的”(Closed for modification)
        对模块行为进行扩展时,不必改动模块的源代码或者二进制代码。

    OCP原则关键是抽象。
    但对于应用程序中中的每个部分都肆意进行抽象不是一个好主意。正确的做法是,开发人员应该仅仅对程序中呈现出频繁变化的那些部分作出抽象。拒绝不成熟的抽象和抽象本身一样重要。   

    OCP背后的主要机制是抽象(abstraction)和多态(polymorphism)。在静态类语言中,比如C++和Java,支持抽象和多态的关键机制之一是继承(inheritance)。正是使用了继承,我们才可以创建实现其基类(base class)中抽象方法的派生类。
分享到:
评论

相关推荐

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

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

    PHP面向对象五大原则之开放-封闭原则(OCP)详解

    本文实例讲述了PHP面向对象五大原则之开放-封闭原则(OCP)。分享给大家供大家参考,具体如下: 1. 什么是“开放-封闭” 随着软件系统规模的不断增大,软件系统的维护和修改的复杂性不断提高,这种困境促使法国工程...

    面向对象设计原则 面向对象设计原则

    面向对象设计原则 单一职责原则--SRP 开放封闭原则--OCP Liskov替换原则--LSP ===

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

    C# 版本,OCP原则的Demo,内部培训资料。

    面向对象设计原则(整理)

    单一职责原则(SRP)、开放-封闭原则(OCP)、Liskov替换原则(LSP)、依赖倒置原则(DIP)、接口分离原则(ISP)

    浅谈C#设计模式之开放封闭原则

    答案是在程序设计的时候使用开放封闭原则。   但是设计的同时,绝对对修改的关闭是不可能的,无论模块是多么的封闭,都存在一些无法对之封闭的变化,既然不可以完全的封闭,设计人员必须对他设计的模块应该对哪种...

    面向对象设计原则.pdf

    面向对象设计原则单一责任原则SRP开放封闭原则OCP

    ignite-nodejs-rentalx:出租公寓的内部存储库,可以点燃NodeJS

    S => SRP-单一职责原则-责任人O => OCP-开放-封闭原则(Princípioaberto / fechado)L => LSP-Liskov替代原则(PrincípiodeSubstituiçãode Liskov)I => ISP-接口隔离原理(PrincípiodaSegregaçãode接口)D ...

    用 Objective-C 实现《大话设计模式》书中的例子,并用一些 Objective-C 的特性对例子的实现加以优化

    开放-封闭原则(OCP),是说软件实体(类、模块、函数等等)应该可以拓展,但是不可修改。 依赖倒转原则(DIP),A. 高层模块不应该依赖低层模块,两个都应该依赖抽象。B. 抽象不应该依赖细节,细节应该依赖抽象。 ...

    面向对象设计三要素五原则六视点

    面向对象三要素 封装(Encapsulation) 继承(Inheritance) ... 开放-封闭原则(OCP) Liskov替换原则(LSP) 依赖倒置原则(DIP) 接口隔离原则(ISP) 变化(Change) 简约(Simplicity) 一致(Coherance)

    JAVA六大原则代码.zip

    开放封闭原则(Open-Closed Principle,OCP):软件实体应该对扩展开放,对修改关闭。这意味着当需要添加新功能时,应该通过扩展现有代码来实现,而不是修改已有代码。这样可以保持现有功能的稳定性。 里氏替换原则...

    OO设计根本的指导原则

    单一职责原则——SRP 开放封闭原则——OCP Liskov替换原则 —— LSP 依赖倒置原则—— DIP 接口隔离原则—— ISP

    clean-node-api

    -----------------------------二手模式时分双工清洁建筑Princípiosaplicados 单一责任原则(SRP) 开放封闭原则(OCP) 里斯科夫替代原理(LSP) 接口隔离原理(ISP) 依赖倒置原则(DIP) 不要重复自己(干) ...

    kata-geometric-modeling-system:Kata 应用和理解开闭原则

    几何建模系统几何建模系统 kata 的灵感来自 Jon Pearce 教授关于的笔记。 这个套路将帮助你理解开闭... 然而,开放-封闭原则说应用程序应该对扩展开放,对修改关闭。 为了满足OCP,我们需要重新设计我们的应用程序。

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

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

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

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

    C#面向对象设计的七大原则

    本文我们要谈的七大原则,即:单一职责,里氏替换,迪米特法则,依赖倒转,接口隔离,合成/聚合原则,开放-封闭 。 1. 开闭原则(Open-Closed Principle, OCP) 定义:软件实体应当对扩展开放,对修改关闭。这句话说...

    :bathtub:适用于Python的简洁代码概念-Python开发

    clean-code-python目录简介变量函数对象和数据结构类S:单一职责原理(SRP)O:开放/封闭原则(OCP)clean-code-python目录简介变量函数对象和数据结构类S :单一责任原则(SRP)O:开放/封闭原则(OCP)L:Liskov...

Global site tag (gtag.js) - Google Analytics