查看原文
其他

最少知识原则之模式的黄金原则

2016-10-25 jimmy_thr 前端圈

最少知识原则的终极目标的是实现完全傻瓜式的程序。 举个例子吧, 就比如 美图神器, 你上传一张凤姐的照片后,你可以选择 自然磨皮,高度磨皮 -> 瘦脸,瘦腿模式 -> 美瞳-> 手动丰胸等等。 当然, 你也可以直接使用一键美化,瞬间angelababy. 你完全不用关心,这些软件是怎样实现这些功能的,让你变美变美变的更美就够了。 而且,更人性化的是,他提供了一键美化的功能,更让你瞬间美美哒。


好吧,回到现实。


我们在程序中,把这个行为就叫做最少知识原则。他的要求就和上面一样,你的程序暴露的接口要是最傻瓜式的,否则你就是反人性!!!


我们来具体说一下实现吧。

减少对像间的耦合性

说几个应用场景吧
看个图


这是我们现在对象间的关系,如果你的leader要你去实现这个业务,我觉得,我宁愿辞!职!


所以,这种反人性的事情,我们是不会做的。 我们一般会,自己动手改一下。


哈哈哈!!! 要知道 一维的难度 << 二维的难度。


看见这样的实现,心里也放心多了。 这个其实就是中介者模式,里面使用了最少知识原则, 本来对象间的联系可谓是 超!级!复!杂!。 但经过重构和优化之后,瞬间降低了一个量级。


关于一些具体实例,大家可以参考一下 前面的 中介者模式 里面所介绍的。


我们如何做到解除对象间的耦合性主要手段还是很多的。 比如学习中介者模式,在对象间创建一个中介者来管理一切。 而其中使用的手段就是封装和隐藏。 


封装在程序中起到的作用就是,封装内部数据,封装操作,然后暴露一个最直接的接口。
同样,再拿单例模式来说一说。


  1. var single = (function(){ 

  2.   var result; 

  3.   return function(obj){ 

  4.     return result||(result=obj); 

  5.   } 

  6. })();

将保存结果的变量放到闭包里面,完美的包装了数据,既不会污染全局,而且也十分方便调用。

最少知识原则的实现

其实,最少知识原则和单一原则所达到目的是相似的,一个是,让你的程序对外尽量简单,一个是让你的程序里的对象,相互联系尽量简单。 关于如果实现的话,其实,就是封装参数,封装函数等这一类的手段,而这些在模式介绍中已经阐述的很清楚了,这里就不做过多的讲解。 如果有兴趣可以看看前面 的 中介者模式,代理模式,策略模式等。


【您可能感兴趣的文章】

一、移动端h5开发相关内容总结(四)

二、移动端h5开发相关内容总结(三)

三、如何打造黄金团队?Google招募人才的8个重点

四、[CSS篇]移动端 h5开发相关内容总结

五、[JavaScript 篇]移动端h5开发相关内容总结

六、[译]使用 Yarn 安装 Vue-cli

七、[译]取代 npm 的新利器 Yarn

八、git分支进阶

九、入职新手必知的劳动法

十、再谈移动端适配和点5像素的由来


前端圈--打造专业的前端技术会议

为web前端开发者提供技术分享和交流的平台

打造一个良好的前端圈生态,推动web标准化的发展

官网:http://fequan.com

微博:fequancom | QQ群:41378087


长按二维码关注我们

投稿:content@fequan.com

赞助合作:apply@fequan.com


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存