面向对象的分析和设计遵循的原则:
一、单一职责原则(SRP)
如果一个类承担的职责过多,就等于把这些职责耦合在了一起。一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱(fragile)设计,当变化发生时,设计会遭受到意想不到的破坏。
二、开放-封闭原则(OCP)
1.“对于扩展是开放的”(Open for extension)。
这意味着模块的行为是可以扩展的。当应用的需求改变时,我们可以对模块进行扩展,使其具有满足那些改变的新行为。换句话说,我们可以改变模块的功能。
2.“对于更改是封闭的”(Closed for modification)。
对模块行为进行扩展时,不必改动模块的源代码或者二进制代码。模块的二进制可执行版本,无论是可链接的库、DLL或者Java的.jar文件,都无需改动。
三、Liskov替换原则(LSP)
子类型(subtype)必须能够替换它们的基类型(base type)
四、依赖倒置原则(DIP)
a.高层模块不应该依赖于低层模块。二者都应该依赖于抽象。
b.抽象不应该依赖于细节。细节应该依赖于抽象。
五、接口隔离原则(ISP)
不应该强迫客户依赖于它们不用的方法。接口的方法应该相关,尽量把“胖”接口分离。