1、单一职责原则(Single Responsibility Principle,简称SRP )
有且只有一个原因可引起类的变更。完成单一职责,用职责来衡量类设计是否优良。
2、里氏替换原则(Liskov Substitution Principle,简称LSP)
子类可完美替换基类,只要父类可以出现的地方,子类就可以出现,反之父类未必可以替换子类。增强程序的健壮性,即使增加了子类,原有子类还可以继续运行。子类对父类的方法尽量不要重写和重载。因为父类代表了定义好的结构,通过这个规范的接口与外界交互,子类不应该随便破坏它。
3、依赖倒转原则(Dependence Inversion Principle)
面向接口编程,依赖于抽象而不依赖于具体。写代码时用到具体类时,不与具体类交互,而与具体类的上层接口交互。通俗点说,调用端不应该依赖具体的实现类,调用端和实现类都要依赖于抽象类。通过抽象类使各个实现类彼此独立,互不影响,实现模块间的松耦合。
4、接口隔离原则(Interface Segregation Principle,简称ISP)
接口中不应该存在子类用不到却必须要实现的方法,如果有,就要将接口拆分,使用多个隔离的接口,比使用单个接口要好。也就是说,我们要为各个类建立专用的接口,而不要试图去建立一个很庞大的接口供所有依赖它的类去调用。
需要注意:接口尽量小,但是要有限度。对接口进行细化可以提高程序设计灵活性,但是如果过小,则会造成接口数量过多,使设计复杂化。所以一定要适度。
5、迪米特法则(最少知道原则)(Demeter Principle)
高内聚、低耦合,类之间要解耦。
6、开放封闭原则(Open Close Principle,简称OCP)
对扩展开放,对修改封闭。通过扩展软件实体来解决需求变化,而不是通过修改已有的代码来完成变化。在程序需要进行拓展的时候,不能去修改原有的代码,而是要扩展原有代码,实现一个热插拔的效果。
总结:
单一职责原则告诉我们实现类要职责单一;
里氏替换原则告诉我们不要破坏继承体系;
依赖倒置原则告诉我们要面向接口编程;
接口隔离原则告诉我们在设计接口的时候要精简单一;
迪米特法则告诉我们要降低耦合。
开闭原则告诉我们要对扩展开放,对修改关闭。