最少知识原则的终极目标的是实现彻底傻瓜式的程序。 举个例子吧, 就好比 美图神器, 你上传一张凤姐的照片后,你能够选择 天然磨皮,高度磨皮 -> 瘦脸,瘦腿模式 -> 美瞳-> 手动丰胸等等。 固然, 你也能够直接使用一键美化,瞬间angelababy. 你彻底不用关心,这些软件是怎样实现这些功能的,让你变美变美变的更美就够了。 并且,更人性化的是,他提供了一键美化的功能,更让你瞬间美美哒。
好吧,回到现实。
咱们在程序中,把这个行为就叫作最少知识原则。他的要求就和上面同样,你的程序暴露的接口要是最傻瓜式的,不然你就是反人性!!!
咱们来具体说一下实现吧。闭包
说几个应用场景吧
看个图
这是咱们如今对象间的关系,若是你的leader要你去实现这个业务,我以为,我宁愿辞!职!
因此,这种反人性的事情,咱们是不会作的。 咱们通常会,本身动手改一下。
哈哈哈!!! 要知道 一维的难度 << 二维的难度.
看见这样的实现,内心也放心多了。 这个其实就是中介者模式,里面使用了最少知识原则, 原本对象间的联系可谓是 超!级!复!杂!。 但通过重构和优化以后,瞬间下降了一个量级。
关于一些具体实例,你们能够参考一下 前面的 中介者模式 里面所介绍的。
咱们如何作到解除对象间的耦合性主要手段仍是不少的。 好比学习中介者模式,在对象间建立一个中介者来管理一切。 而其中使用的手段就是封装和隐藏。
封装在程序中起到的做用就是,封装内部数据,封装操做,而后暴露一个最直接的接口。
一样,再拿单例模式来讲一说。函数
var single = (function(){ var result; return function(obj){ return result||(result=obj); } })();
将保存结果的变量放到闭包里面,完美的包装了数据,既不会污染全局,并且也十分方便调用。学习
其实,最少知识原则和单一原则所达到目的是类似的,一个是,让你的程序对外尽可能简单,一个是让你的程序里的对象,相互联系尽可能简单。 关于若是实现的话,其实,就是封装参数,封装函数等这一类的手段,而这些在模式介绍中已经阐述的很清楚了,这里就不作过多的讲解。 若是有兴趣能够看看前面 的 中介者模式,代理模式,策略模式等。优化