04开闭原则

指的是对扩展开放,对修改关闭。

通过扩展已有对软件系统,可以提供新对行为,以满足对软件对新需求,使变化中对软件具有一定的适应性和灵活性;

已有的软件系统,特别是重要的抽象层模块不能再修改,使得变化中的软件系统具有一定的稳定性和延续性;

抽象化是关键

规定了所有具体类必须提供的特征方法,这个抽象层预见了所有可能的扩展,因此任何扩展情况都不会修改,从而满足了开闭原则的对修改关闭。

同时从抽象类导出不同的具体类,改变系统的行为,因此系统的设计对扩展是开放对,满足了开闭原则的对扩展开放。

对可变性对封装原则

继承应该被看作封装变化的方法,而不是从一般性生成特殊对象的方法;

一种可变性不应当与另一种可变性混合在一起,也就是继承一般不会超过两层,否则就意味着将两种不同的可变性混合在一起了;

里氏代换原则:任何出现基类的地方,子类一定可以出现。里氏代换原则是实现抽象化的具体步骤的规范。

依赖倒转原则:应该依赖于抽象,而不是依赖于具体实现。

合成/聚合复用原则:应尽量使用合成/聚合,而不是继承实现复用的目的。

迪米特法则原则:一个软件实体应尽可能与其他实体发生少的相互作用。

接口隔离原则:为客户端尽可能提供小的单独的接口,而不是大的总的接口。


一个设计模式对什么样的变化进行开放,带来的代价是什么?

使用多态改造条件转移的讨论:

如果条件转移实现了某些商业逻辑的可变性,那么将此种可变性封装起来,则符合开闭原则。若条件转移没有涉及到重要的商务逻辑,或者不会随时间而变化,也没有任何可扩展性,那就没有任何有意义的可变性,这时将条件转移改变为多态则是一种滥用。

你可能感兴趣的:(04开闭原则)