《JavaScript设计模式与开发实践》原则篇(2)—— 最少知识原则

最少知识原则(LKP)说的是一个软件实体应当尽可能少地与其他实体发生相互作用。这 里的软件实体是一个广义的概念,不仅包括对象,还包括系统、类、模块、函数、变量等。 单一职责原则指导我们把对象划分成较小的粒度,这可以提高对象的可复用性。但越来越 多的对象之间可能会产生错综复杂的联系,如果修改了其中一个对象,很可能会影响到跟它相 互引用的其他对象。对象和对象耦合在一起,有可能会降低它们的可复用性。

使用LKP的设计模式

  • 中介者模式 中介者模式很好地体现了最少知识原则。通过增加一个中介者对象,让所有的相关对象都通 过中介者对象来通信,而不是互相引用。所以,当一个对象发生改变时,只需要通知中介者对象 即可。

封装在最少知识原则中的体现

封装在很大程度上表达的是数据的隐藏。一个模块或者对象可以将内部的数据或者实现细 节隐藏起来,只暴露必要的接口 API 供外界访问。对象之间难免产生联系,当一个对象必须引 用另外一个对象的时候,我们可以让对象只暴露必要的接口,让对象之间的联系限制在最小的范围之内。 把变量的可见性限制在一个尽可能小的范围内,这个变量对其他不相关模块的影响就越小, 变量被改写和发生冲突的机会也越小。这也是广义的LKP的一种体现

总结

虽然遵守最小知识原则减少了对象之间的依赖,但也有可能增加一些庞大到难 以维护的第三者对象。在实际开发中,是否选择让代码符合最少知识原则, 要根据具体的环境来定。

系列文章:

《JavaScript设计模式与开发实践》基础篇(1)—— this、call 和 apply

《JavaScript设计模式与开发实践》基础篇(2)—— 闭包和高阶函数

《JavaScript设计模式与开发实践》模式篇(1)—— 单例模式

《JavaScript设计模式与开发实践》模式篇(2)—— 策略模式

《JavaScript设计模式与开发实践》模式篇(3)—— 代理模式

《JavaScript设计模式与开发实践》模式篇(4)—— 迭代器模式

《JavaScript设计模式与开发实践》模式篇(5)—— 观察者模式

《JavaScript设计模式与开发实践》模式篇(6)—— 命令模式

《JavaScript设计模式与开发实践》模式篇(7)—— 组合模式

《JavaScript设计模式与开发实践》模式篇(8)—— 模板方法模式

《JavaScript设计模式与开发实践》模式篇(9)—— 享元模式

《JavaScript设计模式与开发实践》模式篇(10)—— 职责链模式

《JavaScript设计模式与开发实践》模式篇(11)—— 中介者模式

《JavaScript设计模式与开发实践》模式篇(12)—— 装饰者模式

《JavaScript设计模式与开发实践》模式篇(13)—— 状态模式

《JavaScript设计模式与开发实践》模式篇(14)—— 适配器模式

《JavaScript设计模式与开发实践》原则篇(1)—— 单一职责原则

《JavaScript设计模式与开发实践》原则篇(2)—— 最少知识原则

猜你喜欢

转载自juejin.im/post/5c282b8a51882538472091ba
今日推荐