面向对象基本原则
分为五大原则和一大法则,其基本目的就是创建高内聚(类内成员关系)、低耦合(类之间关系)的代码。类之间关系中继承的耦合度最高,尽量使用组合和聚合的方式替代继承。
1.单一职责原则(Single Responsibility Principle)
不要把一个模块的所有功能都放在一个类里,要根据职责划分对类进行拆分。两个不一样的功能就不应放在一个类里,一个类里的方法应该是相关性很高的一组函数。
2.开闭原则(Open Close Principle)
软件系统应该对扩展开放,对修改封闭。当需要添加新功能或对已有功能增加另一种实现时,使用if-else方式添加新的功能模块,就必须破坏已有代码才能实现扩展。在重构时应该将变化多的类似功能(输入输出相同,内部实现不同)抽象为接口,使用注入(接口实现类传入调用者类中)的方式实现,后期有扩展需求只要实现接口进行注入就完成了扩展。实现热插拔,提高扩展性。
3.里氏替换原则(Liskov Substitution Principle)
任何基类出现的地方,子类也一定可以出现。核心原理就是要进行抽象,抽象依赖于继承。涉及继承和多态。
4.依赖倒置原则(Dependence Inversion Principle)
高层次的模块不依赖于低层次模块的具体实现,高层次依赖抽象,低层次也依赖抽象,抽象不依赖细节。抽象指抽象类或接口,重点就是面向接口编程。模块间的依赖通过抽象发生,实现类之间不直接发生依赖关系,其依赖关系通过接口或抽象类产生。
5.接口隔离原则(Interface Segregation Principle)
类之间的依赖应该建立在最小的依赖之上。其目的是系统解开耦合,从而更容易的重构、更改和重新部署。让客户端依赖的接口尽可能的小。
6.迪米特法则(Law of Demeter)
一个对象应该对其他对象有最少的了解,只与直接对象通信。功能模块尽可能的独立。