1、单一职责原则:
一个类只负责一个功能领域中的相应职责,如果承担的职责太多,那么这个类被复用的可能性就越小。或者可以说:就一个类而言,只有一个原因才能导致它被修改。
2、开闭原则:
一个实体软件应该对扩展开放,对修改关闭。简单来说既是,尽量在不修改原有代码的前提下扩展新的功能。为了满足开闭原则,需要对系统进行抽象化设计,抽象化是开闭原则的关键。将功能类似的类抽象出一个抽象类或者接口,后续扩展性的功能时只需在新增一个实现类即可
3、里氏代换原则:
所有使用父类的地方都可以子类进行替换。里氏代换原则是实现开闭原则的重要方式之一,由于使用基类对象的地方都可以使用子类对象,因此在程序中尽量使用基类类型来对对象进行定义,而在运行时再确定其子类类型,用子类对象来替换父类对象。
4、依赖倒置原则:
面向接口编程。开闭原则是目标,里氏代换原则是基础,依赖倒转原则是手段,它们相辅相成,相互补充,目标一致,只是分析问题时所站角度不同而已。
5、迪米特法则:
最少知识原则。一个类应该尽可能少的和其他类进行交互,这样做可以降低系统的耦合度,一个对象的改变不会给太多其他对象带来影响。如果两个对象之间不必彼此直接通信,那么这两个对象就不应当发生任何直接的相互作用,如果其中的一个对象需要调用另一个对象的某一个方法的话,可以通过第三者转发这个调用。简言之,就是通过引入一个合理的第三者来降低现有对象之间的耦合度。
6、接口隔离原则:
使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口。我的理解是需要遵循单一职责原则,一个接口设计的不该过大,否则实现类需要重写它很多不需要、用不上的空方法,影响代码质量。另一方面,接口暴露了很多给其他实现类设计的功能(方法)