文章目录
- 一、定义
- 二、迪米特法则分析
-
- 1.概述
- 2.朋友的分类
- 3.狭义和广义法则
-
- 3.1 狭义法则
- 3.2 广义法则
- 3.3 主要用途
- 三、实例
一、定义
??迪米特法则(Law of Demeter, LoD)又称为最少知识原则(LeastKnowledge Principle, LKP),它有多种定义方法,其中几种典
型定义如下:
??(1)不要和“陌生人”说话。英文定义为: Don’t talk tostrangers.
??(2)只与你的直接朋友通信。英文定义为: Talk only to yourimmediate friends.
??(3)每一个软件单位对其他的单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位。
英文定义为: Each unit shouldhave only limited knowledge about other units: only units”closely” related to the current unit.
二、迪米特法则分析
1.概述
??简单地说,迪米特法则就是指 一个软件实体应当尽可能少的与其他实体发生相互。
2.朋友的分类
??在迪米特法则中,对于一个对象,其朋友包括以下几类:
??(1)当前对象本身(this);
??(2)以参数形式传入到当前对象方法中的对象;·
??(3)当前对象的成员对象;
??(4)如果当前对象的成员对象是一个集合,那么集合中的元素也都是朋友;
??(5)当前对象所创建的对象。
??狭义的迪米特法则:可以降低类之间的耦合,但是会在系统中增加大量的小方法并散落在系统的各个角落。
3.2 广义法则
??广义的迪米特法则:指对对象之间的信息流量、流向以及信息的影响的控制,主要是对信息隐藏的控制。
??信息的隐藏可以使得各个子系统之间脱耦,从而允许它们独立地开发、优化、使用和修改,同时促进软的复用,由于每一个模块都不依赖于其他的模块而存在,因此都可以独立地在其他的地方使用。
??一个系统的规模越大,信息隐藏就越重要,而信息隐藏的重要性也就越明显。
3.3 主要用途
??迪米特法则的主要用途在于 控制信息的过载:
??(1)在类的划分上,应当尽量创建松耦合的类,类之间的耦合度越低,就越有利于复用,一个处在松耦合中的类一旦被修改,不会对关联的类造成太大波及;
??(2)在类的结构设计上,每一个类都应当尽量降低其成员变量和成员函数的访问权限;
??(3)在类的设计上,只要有可能,一个类型应当设计成不变类(用final 修饰);
??(4)在对其他类的引用上,一个对象对其他对象的引用应当降到最低。
三、实例
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!