1、单一职责原则
就一个类而言,应该只有一个引起它变化的原因。意思是,一个类应该实现单一的职责,如果功能太多就应该将类拆分。
2、开放-封闭原则(Open Close Principle)
软件实体(比如类、模块、函数等),对于扩展是开放的,对于更改的封闭的。意思是,如果软件要进行拓展时,不能去修改原代码,而应该去拓展原代码。这样能保证程序有较好的拓展性,易于维护和更新升级。为了实现这个功能,需要遵循“依赖倒转原则”。
3、依赖倒转原则(Dependence Inversion Principle)
即要面向接口编程,而不应该面向实现类编程。
4、里氏替换原则(Liskov Substitution Principle)
如果程序中使用的是父类的话,那一定能替换成子类,并且察觉不出父类和子类对象的区别。
换个说法,即类B继承类A时,除添加新的方法完成新增功能外,尽量不要重写父类A的方法,也尽量不要重载父类A的方法。即子类可以拓展父类的功能,但尽量不要修改父类的功能。
5、迪米特法则(最少知识原则)(Demeter Principle)
一个类对自己依赖的类的内部结构了解的越少越好,即减小类之间的耦合性。所以我们在设计类的时候,尽量降低成员变量的访问权限(private类型),所有逻辑都应该通过方法对外暴露。这样当这个类发生修改时,可以最小限度的影响其他类。
迪米特法则还有一个更简单的定义:只与直接的朋友通信。首先来解释一下什么是直接的朋友:每个对象都会与其他对象有耦合关系,只要两个对象之间有耦合关系,我们就说这两个对象之间是朋友关系。耦合的方式很多,依赖、关联、组合、聚合等。其中,我们称出现成员变量、方法参数、方法返回值中的类为直接的朋友,而出现在局部变量中的类则不是直接的朋友。也就是说,陌生的类最好不要作为局部变量的形式出现在类的内部。
6、合成复用原则(Composite Reuse Principle)
原则是尽量首先使用合成/聚合的方式,而不是使用继承。