最少知识原则

最少知识原则 LKP「Least Knowledge Principle」说的是一个软件实体应当尽可能少地与其他实体发生相互作用。这里的软件实体是一个广义的概念,不仅包括对象,还包括系统、类、模块、函数、变量等。

减少对象之间的联系

单一职责原则指导我们把对象划分成较小的粒度,这可以提高对象的可复用性。但越来越多的对象之间可能会产生错综复杂的联系,如果修改了其中一个对象,很可能会影响到跟它相互引用的其他对象。对象和对象耦合在一起,有可能会降低它们的可复用性

最少知识原则要求我们在设计程序时,应当尽量减少对象之间不必彼此直接通信,那么这两个对象就不要发生直接的相互联系。 常见的做法是引入一个第三者对象,来承担这些对象之间的通信作用。如果一些对象需要向另一些对象发起请求,可以通过第三者来转发这些请求。例如引入「中介者」。

小结

现实生活中,全自动洗衣机的按键就属于最少知识原则的一种,加水、洗衣、漂洗、脱水全部是独立的系统,由第三者对象外部按键串联了起来。但是虽然遵守最小只是原则减少了对象之间的依赖,但也可能增加一些庞大到难以维护的第三者对象,就比如微波炉的无数个按键。因此在实际开发中,是否选择让代码符合最小知识原则,要根据具体的环境来定