美文网首页
开-闭 原则

开-闭 原则

作者: NoNothing | 来源:发表于2020-05-07 00:42 被阅读0次

1.经典力学的基石是牛顿三大定律。面向对象的可复用设计的第一块基石,就是“开-闭”原则。
2.“开-闭”原则内容:一个软件实体应当对扩展开放,对修改关闭。英文原文:Software entities should be open for extension, but closed for modification. 这个原则说的是,应当可以在不修改源代码的情况下改变这个模块的行为。
3.“知固而不知革,物失其则;知革而不知固,物失其均”。关于此句的解释 开与闭的关系,类比固与革。
4.解决问题的关键在于抽象化。
5.“开-闭”原则从另外角度讲述,就是“对可变性的封装原则”,即找到一个系统的可变因素,将之封装起来。
6.要考虑你允许什么发生变化而不让这一变化导致重新设计。
7.“对可变性的封装原则”意味着亮点:① 一种可变性不应当散落在代码的很多角落里,而应当被封装到一个对象里面。② 一种可变性不应当与另一种可变性混合在一起。
8.里氏代换原则,任何基类可以出现的地方,子类一定可以出现。实现“开-闭”原则的关键步骤就是抽象化,里氏代换原则是对实现抽象化的具体步骤的规范。一般而言,违反里氏代换原则的,也违背“开-闭”原则。
9.依赖倒转原则,要依赖抽象,不要依赖实现。“开-闭”原则是目标,而达到这一目标的手段是依赖倒转原则。要想实现“开-闭”原则,就应当坚持依赖倒转原则。违反依赖倒转原则就不可能达到“开-闭”原则的要求。
10.合成/聚合复用原则,要尽量使用合成/聚合,而不是继承关系达到复用的目的。遵守合成/聚合复用原则是实现“开-闭”原则的必要条件。
11.迪米特法则,一个软件实体应当与尽可能少的其他实体发生相互作用。当一个系统面临功能扩展的时候,其中有一些模块,需要修改的压力比其他一些模块大。如果这些模块是相对孤立的,那么它们就不会将修改的压力传递给其他模块。即,一个遵守迪米特原则设计出来的系统在功能需要扩展时,会相对更容易地做到对修改的关闭。
12.接口隔离原则,应当为客户端提供尽可能小的单独的接口,而不要提供大的总接口。接口隔离原则与广义的迪米特法则都是对一个软件实体与其他软件实体的通信的限制。广义的迪米特法则要求尽可能限制通信的宽度和深度。接口隔离原则所限制的是通信的宽度,即,通信应当尽可能地窄。遵循接口隔离原则与迪米特法则,会使一个软件系统在功能扩展的过程当中,不会将修改的压力传递到其他的对象。
13.所有的设计模式都是对不同的可变性的封装,从而使系统在不同的角度上达到“开-闭”原则的要求。
14.学会问一个问题:这个设计模式可以对什么样的变换开放,以及它做到这一点所付出的代价是什么。通过这样的思考,可以更加透彻地了解这种模式对“开-闭”原则的支持程度,以及这种设计模式本身。
15.“将条件转移语句改写成为多态性” 是一条广为流传的代码重构做法。它的意思是说,将一个进行多次条件转移的商业逻辑封装到不同的具体子类中去,从而使用多态性代替条件转移语句。这一代码重构的做法并不能成为设计的原则,事实上,这一做法有明显的缺点:① 任何语言都提供条件转移功能,条件转移本身并不是错误的;② 使用多态性代替条件转移意味着大量的类被创建出来。比如,一个类有三个方法,每个方法都有一个三段的条件转移语句。如果将它们都用多态性代替的话,就会造成9个不同的类,很难想象设计师怎样能明白这九种组合成员之间的关系。
16.何时使用这种重构做法?应当从“开-闭”原则出发来做判断。如果一个条件转移语句确实封装了某种商务逻辑的可变性,那么将此种可变性封装起来就符合“开-闭”原则的设计思想了。但是,如果一个条件转移语句没有涉及重要的商务逻辑,或者不会随着时间的变化而变化,也不意味着任何的扩展性,那么它就没有设计任何有意义的可变性。这时候将这个条件转移语句改为多态性就是一种没有意义的浪费。这种对多态性的滥用叫做“多态性污染”。

相关文章

  • 开-闭 原则

    1.经典力学的基石是牛顿三大定律。面向对象的可复用设计的第一块基石,就是“开-闭”原则。2.“开-闭”原则内容:一...

  • 设计模式学习笔记(一)——面向对象设计原则

    1.基础原则:“开--闭原则”(OCP) “开—闭原则”的含义是:一个软件实体应该对拓展开放,对修改关闭。 2.单...

  • 软件架构设计6大原则(言简意赅,意味深长)

    1.“开-闭”原则(OCP) Software entities should be open for exte...

  • 依赖倒转原则(DIP)

    1.实现“开-闭”原则的关键是抽象化,并且从抽象化导出具体化的实现。如果说“开-闭”原则是面向对象设计的目标的话,...

  • 开闭原则

    简介 开闭原则-(Open-Closed-Principle)“开-闭”原则讲的是:一个软件实体应当对扩展开放,对...

  • 面向对象二:开——闭原则

    开闭原则(OCP)是面向对象设计中“可复用设计”的基石 软件实体应当对扩展开放,对修改关闭 这句话说得略微有点专业...

  • OOP原则

    设计模式遵循的一般原则: 1.开-闭原则(Open-Closed Principle, OCP):一个软件实体应当...

  • 软件构造之【设计模式篇】设计七原则(上)

    一,开闭原则 开闭原则是一开一闭,这一开呢,是对“扩展”开放;这一闭呢,是对“修改”封闭。也就是说,允许扩展,不允...

  • 大话设计模式阅读笔记

    设计模式基本原则 开放-封闭原则(OCP),是说软件实体(类、模块、函数等等)应该可以拓展,但是不可修改。开-闭原...

  • 设计模式 - 开放-封闭原型

    在软件设计模式中,不能修改,但是可以扩展的思想就是开放-封闭原则(OCP),开-闭原则。 对于扩展是开发的,对于更...

网友评论

      本文标题:开-闭 原则

      本文链接:https://www.haomeiwen.com/subject/orunghtx.html