设计模式 - JavaScript

282 阅读2分钟

什么是设计模式

假设有一个空房间,我们要日复一日地往里面放一些东西。最简单的办法当然是把这些东西直接扔进去,但是时间久了,就会发现很难从这个房子里找到自己想要的东西,要调整某几样东西的位置也不容易。所以在房间里做一些柜子也许是个更好的选择,虽然柜子会增加我们的成本,但它可以在维护阶段为我们带来好处。使用这些柜子存放东西的规则,或许就是一种模式。

设计原则

  • 单一职责原则(SRP)

一个对象或方法只做一件事情。如果一个方法承担了过多的职责,那么在需求的变迁过程中,需要改写这个方法的可能性就越大。

应该把对象或方法划分成较小的粒度。

  • 最少知识原则(LKP)

一个软件实体应当 尽可能少地与其他实体发生相互作用。

应当尽量减少对象之间的交互。如果两个对象之间不必彼此直接通信,那么这两个对象就不要发生直接的 相互联系,可以转交给第三方进行处理。

  • 开放-封闭原则(OCP)

软件实体(类、模块、函数)等应该是可以 扩展的,但是不可修改。

当需要改变一个程序的功能或者给这个程序增加新功能的时候,可以使用增加代码的方式,尽量避免改动程序的源代码,防止影响原系统的稳定。

  • 里氏替换原则(LSP)

所有引用基类(父类)的地方必须能透明地使用其子类的对象

  • 依赖倒置原则(DIP)

高层模块不应该依赖于低层模块,二者都应该依赖于抽象。抽象不应该依赖于细节,细节应该依赖于抽象。可以这样说:要针对接口编程,不应该针对实现编程。

  • 接口隔离原则(ISP)

一个类对另一个类的依赖应该建立在最小的接口上。应当为客户端提供尽量小的单独的接口,而不是提供大的接口;使用多个专门的接口比使用单一的总接口要好。

  • 组合重用原则( CRP)

要尽量使用组合,而不是继承关系达到重用的目的