六大基本原则可分为:SOLID和迪米特原则
1.单一职责原则S——优化代码的第一步
Single Responsibility Principle,简称SRP
定义:一个类只负责一项职责。
好处:降低类的复杂度,一个类只负责一个职责,其逻辑一定会比一个类负责多项职责要简单,同时也易于维护,提高类的可读性,提高系统的可维护性。如果单一职责原则遵守的好,那么当修改一个功能时可以显著降低对其它功能的影响。
note: 虽说我们要遵守单一职责原则,但是也不是说死板的对每一个细节都严格遵守,也要视情况而定:如果一个类的逻辑非常简单且可以保证变化极小,此时可以在代码级别上违反单一职责原则;另外当一个类中方法很少时,也可以在方法的级别上违反这一原则。(这里我这么理解单一职责原则:分为两个层次,最高层次是类的层次,其次是方法层次上)但是如果一个类相对庞大,类中方法较多时,一定要遵守单一职责原则;宁愿在第一次扩展时花费精力完成重构,也要遵守这一原则,否则会给以后的扩展带来不可预估的灾难!
2.开闭原则O——让程序更稳定、更灵活
Open Close Principle,简称OCP
定义:软件中的对象(类、模块、函数等)应该对于扩展是开放的,但是,对于修改是封闭的在设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展。
3.里氏替换原则L——构建扩展性更好的系统
Liskov Substitution Principle,简称LSP
定义:所有引用基类的地方必须能透明地使用其子类的对象里氏替换原则的严格表达是:如果对每一个类型为T1的对象O1,都有类型为T2的对象O2,使得以T1定义的所有程序P在所有的对象o1都替换成o2时,程序P的行为没有变化,那么类型T2是类型T1的子类型。
比如:假设有两个类,一个是Base类,另一个是Derived类,并且Derived类是Base类的子类。那么一个方法如果可以接收一个基类对象b的话:method1(Base b),那么它必然可以接受一个子类对象b,也即可以有method1(d).
4.接口隔离原则I——系统有更高的灵活性
InterfaceSegregation Principles,简称ISP
定义:类间的依赖关系应该建立在最小的接口上使用多个专门的接口比使用单一的总接口要好。
5.依赖倒置原则D——让项目拥有变化的能力
Dependence Inversion Principle,简称DIP
依赖倒置原则(Dependence Inversion Principle)是程序要依赖于抽象接口,不要依赖于具体实现。简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合。6.迪米特原则——更好的可扩展性
Law of Demeter,简称LOD
定义:一个对象应该对其他对象有最少的了解参考文献:
《Java与模式》
https://blog.csdn.net/qq_26440221/article/details/53746433
https://blog.csdn.net/niudasheng/article/details/80595217