面向对象开发设计原则

面向对象开发设计过程中,先辈给我们总结了很多的设计原则,这些原则是设计模式的基础,熟练掌握这些原则,对自己的开发设计很有帮助。

S.O.L.I.D 原则

S.O.L.I.D原则是5个类设计原则的缩写。这5个原则是:

SRP(单一职责原则): Single Responsibility Principle

类的职责要单一,纯粹。如果一个类被赋予过多的职责,那就要考虑拆分成多个类。

OCP(开放关闭原则): Open Closed Principle

要求设计的类应该在不修改(或尽量少修改)已有代码的前提下易于扩展。

LSP(里氏替换原则): Lickoc Substitution Principle

要求设计的子类在任何情况下都能替换父类。子类与父类的关系是“is a”的关系。

ISP(接口隔离原则): Interface Segregation Principle

要求提供的接口尽量小而且单一。不要提供给客户一个大而全的接口。

DIP(依赖倒置原则): Dependency Inversion Principle

针对接口(抽象)而不是针对实现编程。具体描述:

  • 高层模块不应该依赖于低层模块,二者都依赖于抽象。
  • 抽象不应该依赖于细节,细节要依赖于抽象。

包设计原则

这里的包是指一个二进制的可发布文件,比如.jar文件、或dll文件,而不是Java包或是C++的命名空间。

头三项包原则是关于包内聚性的,它们会告诉我们该把什么划分到包中:

  • REP,重用发布等价原则,重用的粒度就是发布的粒度。
  • CCP,共同封闭原则,包中的所有类对于同一类性质的变化应该是共同封闭的。
  • CRP,共同重用原则,一个包中的所有类应该是共同重用的。

最后的三项原则是关于包之间的耦合性原则的,并且论述了评价系统中包结构优良与否的评判标准。

  • ADP,无环依赖原则,在包的依赖关系图中不允许存在环。
  • SDP,稳定依赖原则,朝着稳定的方向进行依赖。
  • SAP,稳定抽象原则,包的抽象程度应该和其稳定程度一致。

另外一些重要原则

DRY(Don’t Repeat YourSelf):同样逻辑只在一个地方实现一次。

YAGNI(You ain’t gonna need it):适可而止的设计。设计和架构应该根据需求驱动,而不应该由某个通用架构的最佳实践驱动;不要过度设计;不要为了设计而设计。

KISS(Keep It Stupid and Simple):保持简单。