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

最少知识原则(LKP)说的是一个软件实体应当尽量少地与其余实体发生相互做用。这 里的软件实体是一个广义的概念,不只包括对象,还包括系统、类、模块、函数、变量等。 单一职责原则指导咱们把对象划分红较小的粒度,这能够提升对象的可复用性。但愈来愈 多的对象之间可能会产生错综复杂的联系,若是修改了其中一个对象,极可能会影响到跟它相 互引用的其余对象。对象和对象耦合在一块儿,有可能会下降它们的可复用性。设计模式

使用LKP的设计模式

  • 中介者模式 中介者模式很好地体现了最少知识原则。经过增长一个中介者对象,让全部的相关对象都通 过中介者对象来通讯,而不是互相引用。因此,当一个对象发生改变时,只须要通知中介者对象 便可。

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

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

总结

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

系列文章:

《JavaScript设计模式与开发实践》最全知识点汇总大全设计