面向对象软件设计的S.O.L.I.D原则

具体示例请看原文:S.O.L.I.D: The First 5 Principles of Object Oriented Design

S.O.L.I.D 代表着:
S – Single-responsiblity principle 单一责任原则

一个类应有且仅有一个理由去变更,即一个类只应用于一个工作。

O – Open-closed principle 开闭原则

对象或实体只应该开放扩展,而不该开放修改。

我的理解是应该避免越俎代庖的事情发生,不应该在调用某类实体的地方去关心某个对象该方法的具体实现。例如有两个Shape类的继承类Circle及Square,在对各自计算面积的时候,具体计算面积的方法不是调用者需要关心的,否则每增加一种继承类都要去修改调用方法。

L – Liskov substitution principle 李斯柯夫替代原则

令q(x)是关于类型T的对象x的可证明属性。那么对于T的子类型S的对象y,q(y)也应该是可证明的。

这个是官话,简单来说就是每个子类都应该可替代他们的父类,所谓“子承父业”。

I – Interface segregation principle 接口分离原则

永远不应该强迫用户实现它不使用的接口,或不应该强迫用户依赖于他们不使用的方法。
比如不应该让一个二维平面的类去实现一个计算体积的方法。

D – Dependency Inversion Principle 依赖倒置原则

实体必须依赖于抽象,而不是具象。高级别的模块不能依赖于低级别模块,而是需要依赖于某种抽象。

比如一个Gateway类需要通过某种网络IO接收数据,它应该依赖于一种IO接口的抽象而不是具体的某种IO(比如UDP IO),否则当你想换一种IO做同样的事情时你就会很头疼。