设计模式七大原则

89 阅读4分钟

一、设计模式的目的

编写软件过程中,程序员面临着来自 耦合性,内聚性以及可维护性,可扩展性,重用性,灵活性等多方面的挑战,设计模式是为了让程序(软件),具有更好的

  1. 代码重用性 (即:相同功能的代码,不用多次编写)

  2. 可读性 (即:编程规范性, 便于其他程序员的阅读和理解)

  3. 可扩展性 (即:当需要增加新的功能时,非常的方便,称为可维护)

  4. 可靠性 (即:当我们增加新的功能后,对原来的功能没有影响)

  5. 使程序呈现高内聚,低耦合的特性

二、设计模式常用的七大原则

1 单一职责原则 :即一个类应该只负责一项职责

1.类似Mapper 一个类只操作一张表。即:一个类只操作一类问题,一个方法只做一件事情。 
2.当有多分支结构出现时,依次从类->方法->方法里的代码等角度拆分职责功能,避免if-else这种代码。

2 接口隔离原则 :即一个类对另一个类的依赖 应该建立在最小的接口上

1.接口应该拆分,只需要引用自己需要的接口方法就行。

3 依赖倒转(倒置)原则 :即依赖接口等抽象模块,不依赖具体实现类。

1. 高层模块不应该依赖低层模块,二者都应该依赖其抽象 
2. 抽象不应该依赖细节,细节应该依赖抽象 
3. 依赖倒转(倒置)的中心思想是面向接口编程

4 里氏替换原则 :使用继承时,遵循里氏替换原则,在子类中尽量不要重写父类的方法。

里氏替换原则告诉我们,继承实际上让两个类耦合性增强了,在适当的情况下,可 以通过聚合,组合,依赖 来解决问题。
无意中重写了父类的方法,造成原有功能出现错误.
通用的做法是:原来的父类和子类都继承一个更通俗的基类,原有的继承关系去掉,采用依赖,聚合,组合等关系代替

5 开闭原则(ocp):尽量通过扩展软件实体的行为来实现变化,而不是通过修改已 有的代码来实现变化。新增而不修改原有的代码。最终目的就是实现开闭原则。

一个软件实体如类,模块和函数应该对扩展开放(对提供方),对修改关闭(对使用方)。用抽象构建框架,用实现扩展细节。

7 迪米特法则:最少知道原则,即一个类对自己依赖的类知道的 越少越好。也就是说,对于被依赖的类不管多么复杂,都尽量将逻辑封装在类的内部。对外除了提供的public 方法,不对外泄露任何信息。

直接朋友:我们称出现成员变量,方法参数,方法返回值中的类为直接的朋友,
而出现在局部变量中的类不是直接的朋友。陌生的类最好不要以局部变量 的形式出现在类的内部。
调用方:调用其他类时,不要在自己类实现其他类的逻辑;而是直接拿到调用结果。
提供方:封装自己方法的实现逻辑细节,并隐藏这些细节 对外提供方法得到调用结果。

8 合成复用原则:原则是尽量使用合成/聚合的方式,而不是使用继承。

AB两个类B继承A,继承两个类耦合太大,比如:A类增加方法B类即使不用此方法也会被迫增加方法。
解决方法: 参数传递,两个类不要继承关系,把A类作为参数(或成员变量)传递进来,然后调用A类的方法

设计原则核心思想:

  1. 找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。

  2. 针对接口编程,而不是针对实现编程。

  3. 为了交互对象之间的松耦合设计而努力

大佬写的:juejin.cn/post/701116…