1、what
一个软件实体应当尽可能少的与其他实体发生相互作用
软件实体是一个广义的概念,不仅包括对象,还包括系统、类、模块、函数、变量等。
2、why
单一职责原则知道我们把对象划分成较小的粒度,提高对象的可复用性。但是越来越多的对象之间可能会产生错综复杂的联系,如果修改了其中一个对象,很可能会影响到跟它相互引用的其他对象。
对象和对象耦合在一起,有可能会降低它们的可复用性。
最少知识原则要求我们在设计程序时,应尽量减少对象之间的交互。
如果两个对象之间不必彼此直接通信,那么这两个对象就不要发生直接的相互联系。
3、how
引入第三者对象,来承担这些对象之间的通信作用。
4、设计模式中的最少知识原则
①中介者模式
②外观模式
5、相对性
虽然遵守最小知识原则减少了对象之间的依赖,但也有可能增加一些庞大到难以维护的第三者对象。实际开发中,是否选择让代码符合最少知识原则,要根据具体的环境来定。
参考:
《JavaScript设计模式与开发实践》 曾探著 AlloyTeam出品