设计模式六大原则

185 阅读3分钟

摄图网_401806482_宇航员与鲸鱼治愈系插画(非企业商用).jpg

设计模式原则的出发点也是软件工程的终极目标:高内聚,低耦合。准确的讲就是降低代码复杂程度,合理的降低耦合度

一、什么是耦合度

  1. 耦合度指对象与对象之间、方法与方法之间有直接影响,这叫耦合。如何两个对象或两个方法通过某个变量来产生联系,这不叫耦合。

二、耦合度和复杂度的危害

  1. 复杂度: 高,代码质量不高,可维护性差,复用性差,不易扩展

  2. 耦合度: 无(不可能),低(合理),过高不易维护。但复用性和扩展性是好的

三、开发时的流程

优先降低复杂度,尽量降低耦合度

  1. 利用单一职责原则,开闭原则,里氏代换原则降低复杂度

  2. 通过迪米特法则减少耦合

  3. 通过依赖倒置原则消除可以没有的耦合

四、具体内容

4.1 单一职责原则

  1. 定义:一个类应该有且仅有一个引起他变化的原因,否则类应该被拆分。

  2. 在 JavaScript 中,需要用到类的场景并不太多,单一职责原则更多地是被运用在对象或者方法级别上,体现为:一个对象(方法)只做一件事情

4.2 开闭原则

  1. 定义:一个软件实体应该对扩展开放,对修改关闭

  2. 软件实体包含三部分:

  • 项目中划分出的模块

  • 类与接口

  • 方法

  1. 含义: 当应用的需求改变时,在不修改软件实体的源代码或者二进制代码的前提下,可以扩展模块的功能,使其满足新的需求

4.3 里氏代换原则

  1. 在面向对象对象编程中,将一个基类对象替换成它的子类对象,程序将不会产生任何错误和异常,反过来则不成立,如果一个软件实体使用的是一个子类对象的话,那么它不一定能够使用基类对象。

  2. 里氏代换原则是对开闭原则的补充

4.4 迪米特法则(最小知道原则)

  1. 一个接口或一个方法,传入的参数越少越好,降低耦合度的同时也会降低复杂度

  2. 举个🌰,谍战片中,两个同阵营的间谍相互之间不知道对方的身份,这是为了最大程度减少伤害,死只死一条线上的,这样做是最有利的

4.5 依赖倒置原则

  1. 最常用的原则,JavaScript中没有接口的概念,所以该原则在前端中可以理解为多者之间的依赖状态,而不依赖彼此

  2. 举个🌰

  • 没用依赖导致原则:相当于A,B两个人直接交流,证明A、B有直接联系,耦合度较高

  • 使用依赖导致原则:相当于A,B两个人通过将字写在纸上(变量)这种方式进行交流,A、B两者之间没有直接联系

  • 前端中最典型的使用该原则的场景就是vuex

4.6 接口分离原则

  1. 把大接口拆分成小接口,不能一个接口全部是实现增删改查

五、参考

里氏代换原则