设计模式系列--23种常见设计模式之迪米特法则(7)

迪米特法则(LKP:Least Knowledge Principle,又叫最少知识原则)

概念

一个软件实体应当尽可能少的与其他实体发生相互作用。每一个软件单位对其他的单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位。
换句话说:如果两个类不必彼此直接通信,那么这两个类就不应当直接的相互作用;如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。

目的

解耦,降低类之间的耦合
由于每个类尽量减少对其他类的依赖,很容易使得系统的功能模块相互独立,相互之间也就不存在(或很少有)依赖关系。

迪米特法则不希望类之间建立直接的联系。如果真的有需要建立联系,也希望能通过它的友元类来转达。
因此,遵循迪米特法则的结果就是:系统中存在大量的中介类,这些类只是为了传递不同调用之间的关系,却没有实际的功能用途,在一定程度上增加了系统的复杂度。
比如:中介者模式。

实例

比如:A、B 是朋友,  B、C是朋友, A和C 如果想要交流,要么通过B(迪米特法则),要么A和C建立朋友关系(耦合)后交流。


编者按:

1、在类的结构设计上,每一个类都应当尽可能降低成员的访问权限,只暴露对外使用的;
2、强调类之间的松耦合,保持独立性,减少直接关联;
3、耦合越弱,越有利于复用,相应的扩展和修改则不会对有关系的类造成较大的影响;
4、迪米特法则使得中介类增多,系统复杂度提升;
5、通信链路延长,中转时效增多,问题点也增多。

总之,合适即最好,权衡比较,选择相对符合当前系统需求的才是最好的。
 

猜你喜欢

转载自blog.csdn.net/weisong530624687/article/details/109626341