天天看点

开闭原则OCP

1.开闭原则重要的是接口,接口是一个系统中最稳定的部分,一旦定义,几乎不会修改。

给系统定义一个一劳永逸,不会修改的接口,至关重要。此为关闭。

对接口的实现可以扩展和改变,此为开放。

2. 从另一个角度讲:对可变性就行封装的原则。

此原则可以说是设计模式的主题。每个设计模式都在封装某一类变化。

设计系统时考虑哪一部分可能产生变化,要考虑允许发生变化而不会导致重新设计。

此原则意味着两点:

(1) 可变性不应该散落到各个角落,而应当被封装到一个对象里面

(2) 一种可变性和另一种可变性不应该混合在一起。

3.开闭原则的补充---单纯讲开闭原则,实现起来没有规律可循,那么有以下原则补充:

(1)里氏替换原则:任何基类可以出现的地方,子类一定可以出现。

违反里氏原则的,一定违反开闭原则。

(2)依赖倒置原则:要依赖抽象,不要依赖于实现。

违反依赖倒置原则的,就不能达到开闭原则的要求

(3) 组合/聚合原则:尽量使用组合/聚合,而不是继承关系达到复用目的。

违反依赖倒置原则的,就不能达到开闭原则的实现。

(4)迪米特 法则:一个软件实体应该尽可能少的实体发生相互作用

(5)接口隔离原则:应当为客户端提供尽可能小的接口,而不要提供大而总的接口。

4. 开闭原则对重构的指导:将条件转移语句改写成多态。是一条广为流传的重构性做法。

但是条件语句如果没有将来可能的case(即可变性)。要尽量避免做“多态”重构。否则会造成“多态性”污染

转载于:https://www.cnblogs.com/itquanquan/p/8462015.html

继续阅读