五大设计原则之(一)---迪米特法则

迪米特法则也称最少知识原则,一个对象应该对其它对象有最少的了解。通俗也说:一个类应该对自己需要耦合或调用的类知道得最少。

在类方法的设计中可以坚持这样的一个原则: 如果一个方法放在中,即不增加类间的关系,也对本类不产生负面影响,就放置本类中。

 广义的迪米特法则:
    一个模块设计的好坏的一个重要标志就是该模块在多大程度上讲自己的内部数据与实现的有关细节隐藏起来。
    一个软件实体应当尽可能少的与其他实体发生相互作用。
    每一个软件单位对其他的单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位。
    迪米特法则的目的在于降低类与类之间的耦合。由于每个类尽量减少对其他类的依赖,因此,很容易使得系统的功能模块功能独立,是的相互间存在尽可能少的依赖关系。
    在运用迪米特法则到系统的设计中时,要注意以下几点:
     第一:在类的划分上,应当创建弱耦合的类,类与类之间的耦合越弱,就越有利于实现可复用的目标。
    第二:在类的结构设计上,每个类都应该降低成员的访问权限。
    第三:在类的设计上,只要有可能,一个类应当设计成不变的类。
    第四:在对其他类的应用上,一个对象对其他类的对象的应用应该降到最低。
    第五:尽量限制局部变量的有效范围。

设计模式类图:

 

最佳实现:

迪米特法则的做法观念就是类间解耦,弱耦合,只有弱耦合了以后,类的复用率才可以提高,其要求的结果就是产生了大量的中转或跳转类,导致的复杂性提高,同时也为维护带来了难度,所以在采用迪米特法则时需要反复权衡,既做到让结构清晰,又做到高内聚低耦合。

  但是过度使用迪米特法则,也会造成系统的不同模块之间的通信效率降低,使系统的不同模块之间不容易协调等缺点。同时,因为迪米特法则要求类与类之间尽量不直接通信,如果类之间需要通信就通过第三方转发的方式,这就直接导致了系统中存在大量的中介类,这些类存在的唯一原因是为了传递类与类之间的相互调用关系,这就毫无疑问的增加了系统的复杂度。解决这个问题的方式是:使用依赖倒转原则(通俗的讲就是要针对接口编程,不要针对具体编程), 这要就可以是调用方和被调用方之间有了一个抽象层,被调用方在遵循抽象层的前提下就可以自由的变化,此时抽象层成了调用方的朋友。

原文地址:https://www.cnblogs.com/wisdo/p/4178723.html