SRP:单一职责原则,即类要具有内聚性,内聚性是指一个模块的组成元素之间的功能相关性。一个类应该只有一个发生变化的原因。应该避免以组的形式考虑问题。
OCP:开放封闭原则,软件实体(类、模块、函数)应该是可以扩展的,但是不可修改。一般可以通过抽象的方式来实现该目的。及一个模块依赖于一个抽象而不是具体的类。
LSP:替换原则,子类型必须能替换掉它所有的基类型。
DIP:依赖倒置原则
第1点:高层模块不依赖底层模块,两者都依赖抽象
第2点:抽象不应该依赖于细节,细节应该依赖于抽象
1.任何变量都不应该持有一个指向具体类的指针或者引用.
2.任何类都不应该从具体类派生(始于抽象,来自具体)
3.任何方法都不应该覆写它的任何基类中的已经实现了的方法.
这个原则对于那些虽然具体但是却稳定的类来说似乎并不是很合适, 如果一个类不太会改变, 而且也不太可能创建其他的派生类,那么依赖它似乎并没有太大的危害。比如String类。
ISP:接口隔离原则,当不得不引用一个非内聚的类或者模块时,可以通过多个内聚接口来将这部分内容隔离。