资讯专栏INFORMATION COLUMN

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

Ocean / 718人阅读

摘要:最少知识原则的终极目标的是实现完全傻瓜式的程序。我们如何做到解除对象间的耦合性主要手段还是很多的。最少知识原则的实现其实,最少知识原则和单一原则所达到目的是相似的,一个是,让你的程序对外尽量简单,一个是让你的程序里的对象,相互联系尽量简单。

最少知识原则的终极目标的是实现完全傻瓜式的程序。 举个例子吧, 就比如 美图神器, 你上传一张凤姐的照片后,你可以选择 自然磨皮,高度磨皮 -> 瘦脸,瘦腿模式 -> 美瞳-> 手动丰胸等等。 当然, 你也可以直接使用一键美化,瞬间angelababy. 你完全不用关心,这些软件是怎样实现这些功能的,让你变美变美变的更美就够了。 而且,更人性化的是,他提供了一键美化的功能,更让你瞬间美美哒。
好吧,回到现实。
我们在程序中,把这个行为就叫做最少知识原则。他的要求就和上面一样,你的程序暴露的接口要是最傻瓜式的,否则你就是反人性!!!
我们来具体说一下实现吧。

减少对像间的耦合性

说几个应用场景吧
看个图

这是我们现在对象间的关系,如果你的leader要你去实现这个业务,我觉得,我宁愿辞!职!
所以,这种反人性的事情,我们是不会做的。 我们一般会,自己动手改一下。

哈哈哈!!! 要知道 一维的难度 << 二维的难度.
看见这样的实现,心里也放心多了。 这个其实就是中介者模式,里面使用了最少知识原则, 本来对象间的联系可谓是 超!级!复!杂!。 但经过重构和优化之后,瞬间降低了一个量级。
关于一些具体实例,大家可以参考一下 前面的 中介者模式 里面所介绍的。
我们如何做到解除对象间的耦合性主要手段还是很多的。 比如学习中介者模式,在对象间创建一个中介者来管理一切。 而其中使用的手段就是封装和隐藏。
封装在程序中起到的作用就是,封装内部数据,封装操作,然后暴露一个最直接的接口。
同样,再拿单例模式来说一说。

var single = (function(){
    var result;
    return function(obj){
        return result||(result=obj);
    }
})();

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

最少知识原则的实现

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/78569.html

相关文章

  • 单一职责原则模式黄金法则

    摘要:今天说一下,单一职责原则。比如,接口的地址本来已经很完美了,但是你的是处女座最讨厌处女座非要给路由添加几个以保证后台数据的安全。为了过年,我会选择使用,因为不知道处女座以后会做出什么傻事来。此时的使用动态织入后,可以完美的解决处女座。 在设计模式中,有着几条视为黄金原则,设计模式都是围绕黄金原则,对代码或者说是架构设计做出一些相应的调整,久而久之,GoF 4人组,发现其实有些设计思想可...

    GeekQiaQia 评论0 收藏0
  • 开放封闭原则模式黄金法则

    摘要:开放封闭原则应该算是这几个原则里面最容易理解的一个。另外,语句就是开放封闭原则的死敌这个是状态模式中的一个例子。处理开放封闭模式的特例我们都是人,不可能一开始都写出完美的代码。 开放-封闭原则应该算是这几个原则里面最容易理解的一个。它的宗旨就是:如果你想扩展或者改变一个程序的功能,可以增加代码,但是不能改变程序的源码。如果,是对于那些码农来说,最快捷的办法就是改变源码,但是我们面向的是...

    MasonEast 评论0 收藏0
  • 2018年系列设计模式汇总贴

    摘要:里氏代换原则里氏代换原则面向对象设计的基本原则之一。里氏代换原则是对开闭原则的补充。而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范。 转眼间已经进入了2018年,回顾过去的一年,才发现自己并没有达到预期的目标。虽然有所提高,但是和自己的预期相差甚远。希望能够借着这个系列的开始,给自己的2018年开个好头。 设计模式 设计模式(Design P...

    WilsonLiu95 评论0 收藏0
  • 设计模式软件设计七大原则

    摘要:引申意义子类可以扩展父类的功能,但不能改变父类原有的功能。含义当子类的方法实现父类的方法时重写重载或实现抽象方法,方法的后置条件即方法的输出返回值要比父类更严格或相等。优点约束继承泛滥,开闭原则的一种体现。降低需求变更时引入的风险。 0x01.开闭原则 定义:一个软件实体如类,模块和函数应该对扩展开放,对修改关闭 要点: 当变更发生时,不要直接修改类,而是通过继承扩展的方式完成变...

    ixlei 评论0 收藏0
  • 迪米特法则

    摘要:个人博客原文迪米特法则设计模式六大原则之五迪米特法则。老师便给同学们讲解了这个例子,让学生感受一番迪米特法则。总结迪米特法则主要讲述的观点是高内聚低耦合。 个人博客原文:迪米特法则 showImg(https://segmentfault.com/img/remote/1460000017779272?w=960&h=520); 设计模式六大原则之五:迪米特法则。 简介 姓名:迪米特法...

    OnlyMyRailgun 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<