1. 单一职责原则
单一职责原则(Single Responsibility Principle,SRP):有且仅有一个原因引起类的变更,一个接口或类只有一个职责。
2. 里氏替换原则
里氏替换原则(Liskov Substitution Principle,LSP):所有引用基类的地方必须能透明地使用其子类对象,即只要父类能出现的地方子类就可以出现。里氏替换原则包含四层含义:
- 子类必须实现父类的方法
- 子类可以有自己的个性
- 覆盖或实现父类的方法时输入参数可以被放大(子类中方法的前置条件必须与超类中被覆写的方法的前置条件相同或者更宽松)
- 覆写或实现父类的方法时输出结果可以被缩小
3. 依赖倒置原则
依赖倒置原则(Dependence Inversion Principle,DIP):模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系通过接口或抽象类产生;接口或抽象类不依赖于实现类;实现类依赖接口或抽象类。
对象的依赖关系有三种方式来传递:
- 构造函数传递依赖对象
- Setter方法传递依赖对象
- 接口声明依赖对象
4. 接口隔离原则
接口隔离原则(Interface Segregation Principle,ISP):接口尽量细化,同时接口中的方法尽量少。
5. 迪米特原则
迪米特原则(Law of Demeter,LoD):也称最少知识原则(Least Knowledge Principle,LKP),类间解耦,弱耦合(一个对象应该对其它对象有最少的了解)。
6. 开闭原则
开闭原则(Open Closed Principle,OCP):一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。