单一职责原则
该原则是比较好容易理解的原则,即让一个类的功能单一化、简单化。大的功能有很多个小功能的类组合而成。功能单一的类比较容易维护,而且功能因为简单而更稳定。
开放封闭原则
“扩展开放、修改封闭”。
即写成的类发布后,尽量少修改。当因为业务需求需要修改功能时,首先考虑是功能扩展,而不是修改原有功能,因为经常修改既有稳定功能很有可能产生新的bug。
那么如何才能支持扩展呢?其中一个办法是给可能修改的功能类设定一个基类(即抽象该功能),这样如果需要修改既有功能,那么只要新增一个类继承于这抽象类,然后实现需要的功能即可,这样就达到了不修改原有功能的问题。
开放封闭原则是面向对象设计的核心所在,也即抽象是面向对象设计的核心所在。
依赖倒转原则
设计(编程)依赖接口。
接口其实就是抽象的体现,它定义了很多类似功能通用的功能接口,只要是每个具体实现类基于该接口实现了应该实现的功能,那么如果其中一个实现类能够在某个系统中正常运转,另外的实现类也可以在这个系统中正常运转。
合成/聚合复用原则
尽量使用合成和聚合,尽量不使用类继承。
因为“子类的实现和父类有非常紧密的依赖关系,以至于父类实现中的任何变化必然导致子类发生变化。当你需要复用子类时,如果继承下来的实现不适合解决的新的问题,则父类必须重写或被其他更适合的类替换”。
类继承必须满足“is-a”关系,不符合这个关系的情况,考虑使用合成/聚合,不能为了解决问题而强制继承(不太符合is-a)。