迪米特原则 6,Least Knowledge Principle(LKP)最少知识原则,又称为“Law of Demeter”
迪米特法则的各种表述
① 只与你直接的朋友们通信;
② 不要跟“陌生人”说话;
③ 每一个软件单位对其他的单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位。
和ISP接口隔离原则一样,限制类与类之间的通信。ISP限制的是宽度,而LoD迪米特原则限制的是通信的
广度和深度。
LoD在 广度上面,尽量减少远距离类的关联,而使用与自己有关的类,并且也与远距离类有关的类。
*可是这种做法有一点麻烦。多个远距离类产生关联的时候,不怎么容易处理,所以增加一个远距离类的抽象类。所有的远距离类都是通过抽象类的形式来访问。
在深度上面,控制权限是最重要的,对于类,一个是default 和public,尽量最小权限;对于成员,
private,default,protected,public。往上面走,权限越小,依赖的耦合就越小。
迪米特法则与设计模式
对迪米特法则的最好描述,可以参考门面模式和调停者模式。
广义迪米特法则
☆ 在将迪米特法则运用到系统的设计中时,应注意的几点:
① 在类的划分上,应该创建有弱耦合的类;
② 在类的结构设计上,每一个类都应当尽量降低成员的访问权限;
③ 在类的设计上,只要有可能,一个类应当设计成不变类;
④ 在对其他类的引用上,一个对象对其它对象的引用应当降到最低;
⑤ 尽量降低类的访问权限;
⑥ 谨慎使用序列化功能;
⑦ 不要暴露类成员,而应该提供相应的访问器(属性)。
http://blog.csdn.net/plusir/archive/2006/08/21/1104095.aspx