参考文章:https://blog.csdn.net/qq_40123329/article/details/95750112
设计模式的六大原则是什么
单一职责原则
里氏替换原则
依赖倒置原则
接口隔离原则
迪米特原则
开闭原则
什么是单一职责:
一个类只负责一项职责,尽量做到类的只有一个行为原因引起变化;
a、业务对象(BO business object)、业务逻辑(BL business logic)拆分;(根据我的理解就是一个类只做一件事情,比如这个类只生产鼠标,就别加键盘,主机这些功能)
当职能扩散时可以适度违背单一职能原则,方法是:
只有逻辑足够简单,才可以在代码级别上违反单一职责原则;只有类中方法数量足够少,才可以在方法级别上违反单一职责原则;(什么叫职能扩散,就是在后期在该功能的基础上又细分职能)
什么是里氏替换原则;
子类型必须可以替换掉它们的父类型。子类可以扩展父类的功能,但不能改变父类原有的功能。
什么是依赖倒置原则:
(1)高层模块不应该依赖于低层模块,2个都应该依赖于抽象。
(2)抽象不应该依赖于细节,细节应该依赖抽象。
什么是接口隔离原则:
客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。
什么是迪米特原则:
如果2个类不必彼此直接通信,那么这2个类不应当发生直接的相互作用,如果其中的一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。前提是在类的结构设计上,每一个类都应该尽量降低成员的访问权限。
迪米特原则的根本在于强调了类之间的松耦合。类之间的耦合越弱,越有利于复用,一个处在弱耦合的类被修改,不会对有关系的类造成波及。
不要和“陌生人”说话、只与你的直接朋友通信等,在迪米特法则中,对于一个对象,其朋友包括以下几类:
(1) 当前对象本身(this);
(2) 以参数形式传入到当前对象方法中的对象;
(3) 当前对象的成员对象;
(4) 如果当前对象的成员对象是一个集合,那么集合中的元素也都是朋友;
(5) 当前对象所创建的对象。
什么是开闭原则
软件实体(类,模块,函数)应该可以扩展,但是不可以修改。即对于扩展是开放的,对于更改是封闭的。
面对需求,对程序的改动是通过增加新代码进行的,而不是更改现有的代码。开放-封闭原则是面向对象设计的核心所在,遵循这个原则可以使系统可维护,可扩展,可复用,灵活性好。
开闭原则无非就是想表达这样一层意思:用抽象构建框架,用实现扩展细节。因为抽象灵活性好,适应性广,只要抽象的合理,可以基本保持软件架构的稳定。而软件中易变的细节,我们用从抽象派生的实现类来进行扩展,当软件需要发生变化时,我们只需要根据需求重新派生一个实现类来扩展就可以了。当然前提是我们的抽象要合理,要对需求的变更有前瞻性和预见性才行。
说到这里,再回想一下前面说的5项原则,恰恰是告诉我们用抽象构建框架,用实现扩展细节的注意事项而已:单一职责原则告诉我们实现类要职责单一;里氏替换原则告诉我们不要破坏继承体系;依赖倒置原则告诉我们要面向接口编程;接口隔离原则告诉我们在设计接口的时候要精简单一;迪米特法则告诉我们要降低耦合。而开闭原则是总纲,他告诉我们要对扩展开放,对修改关闭