设计原则之最少知识原则 javascript
2016-11-07 18:31
204 查看
一个软件实体应当尽可能少地与其他实体发生相互作用,这就是最少知识原则(LKP),所谓软件实体是一个广义的概念,包括系统,类,,对象,模板,函数,变量等。而在javascript中,软件实体大多指的是对象的概念,一般来说,减少对象之间的联系首先要做好对对象的封装,使其暴露出有限的接口和内容,其次是javascript中对象繁多,包括自带的window,location等,再加上各种自定义对象,按照单一职责原则来说程序中很容易出现复杂的对象关系网,而此时就需要最少知识原则来减少对象之间的耦合了。
最少知识原则要求我们如果两个对象之间不必彼此直接通信,那么这两个对象就不要发生直接的相互联系。我们常见的做法是引入一个第三方来作为中介转发对象之间的请求,最能体现LKP的是中介者模式和外观模式。
中介者模式比较常见,通过增加一个中介对象来管理多个对象之间的通信,以后我也会在我的博客里着重介绍,有兴趣的朋友可以自行查阅,下面着重介绍一下外观模式,其在javascript中的刻意应用的场景并不是那么多或者说其实我们无时无刻不在用外观模式,只是他有一点不起眼。外观模式主要是为子系统中的一组接口提供一个一致的界面,也就是一个高层的接口,以便使得整个系统的可用性增强,但是这个高层接口并没有屏蔽掉下面接口的调用,高层接口只是提供了一个统一调度整个系统的接口。下面举一个最简单的例子。
var a = function(){
alert(1);
};
var b = function(){
alert(2);
};
var facade = function(){
a();
b();
};
facade();
外观模式的关键是定义一个高层接口去封装一组子系统,其作用主要是为子系统提供一个简单便利访问的入口和隔绝客户与复杂子系统之间的联系,从后者来看无疑是减少了实体间的相互作用,也就是符合最少知识原则的,而同时他们其实也是符合单一职责原则的,高层接口只负责整合子系统提供接口,子系统各司其职,改变高层接口不会影响子系统正常调用,改变子系统高层接口也不会受到影响。
最后要提及的一点就是,并不是所有的情况必须使用最少知识原则,实际的开发环境,产品需求功能都是千变万化的,要根据具体环境选择是否跟从原则,最少知识原则原则绝不是万能的,固然他可以让实体之间的联系变少,增强代码的可维护性,但是滥用很有可能会创造出庞大到难以维护的第三方。
最少知识原则要求我们如果两个对象之间不必彼此直接通信,那么这两个对象就不要发生直接的相互联系。我们常见的做法是引入一个第三方来作为中介转发对象之间的请求,最能体现LKP的是中介者模式和外观模式。
中介者模式比较常见,通过增加一个中介对象来管理多个对象之间的通信,以后我也会在我的博客里着重介绍,有兴趣的朋友可以自行查阅,下面着重介绍一下外观模式,其在javascript中的刻意应用的场景并不是那么多或者说其实我们无时无刻不在用外观模式,只是他有一点不起眼。外观模式主要是为子系统中的一组接口提供一个一致的界面,也就是一个高层的接口,以便使得整个系统的可用性增强,但是这个高层接口并没有屏蔽掉下面接口的调用,高层接口只是提供了一个统一调度整个系统的接口。下面举一个最简单的例子。
var a = function(){
alert(1);
};
var b = function(){
alert(2);
};
var facade = function(){
a();
b();
};
facade();
外观模式的关键是定义一个高层接口去封装一组子系统,其作用主要是为子系统提供一个简单便利访问的入口和隔绝客户与复杂子系统之间的联系,从后者来看无疑是减少了实体间的相互作用,也就是符合最少知识原则的,而同时他们其实也是符合单一职责原则的,高层接口只负责整合子系统提供接口,子系统各司其职,改变高层接口不会影响子系统正常调用,改变子系统高层接口也不会受到影响。
最后要提及的一点就是,并不是所有的情况必须使用最少知识原则,实际的开发环境,产品需求功能都是千变万化的,要根据具体环境选择是否跟从原则,最少知识原则原则绝不是万能的,固然他可以让实体之间的联系变少,增强代码的可维护性,但是滥用很有可能会创造出庞大到难以维护的第三方。
相关文章推荐
- 设计模式---->最少知识原则/迪米特法则
- 设计模式值六大原则——迪米特法则(LoD)也称为最少知识原则(LKP)。
- 设计模式---->最少知识原则/迪米特法则
- 设计模式-最少知识原则
- 设计模式——最少知识原则/迪米特法则
- 设计模式六大原则(五)-- 最少知识原则 ( LKP ) / 迪米特法则 ( LOD )
- 设计模式之迪米特法则LoD(最少知识原则)
- 设计模式之迪米特法则(最少知识原则)学习
- 设计模式六大原则例子(五)-- 最少知识原则(LKP)/ 迪米特法则(LOD)例子
- 设计模式之迪米特原则(LOD)(最少知识原则)
- 设计模式无限重读之最少知识原则(LKP)
- Java设计模式:外观模式(Facade Pattern)与最少知识原则
- 最少知识原则(Least Knowledge Principle)
- GOF提出的23种设计模式是哪些 设计模式有创建形、行为形、结构形三种类别 常用的Javascript中常用设计模式的其中17种 详解设计模式六大原则
- 迪米特法则(LoD)最少知识原则
- javascript的api设计原则
- (2) 第一章 WCF学前知识-SOA设计架构原则
- 设计模式中的设计原则之最小知识原则(Least Knowledge Principle - LKP)
- 深入浅析JavaScript的API设计原则
- JavaScript API 设计原则