23种设计模式-迪米特法则

概念:

1) 一个对象应该对其他对象保持最少的了解

2) 类与类关系越密切,耦合度越大

3) 迪米特法则(Demeter Principle)又叫最少知道原则,即一个类对自己依赖的类知道的 越少越好。也就是说,对于被依赖的类不管多么复杂,都尽量将逻辑封装在类的内 部。对外除了提供的public 方法,不对外泄露任何信息

4) 迪米特法则还有个更简单的定义:只与直接的朋友通信

5) 直接的朋友:每个对象都会与其他对象有耦合关系,只要两个对象之间有耦合关系, 我们就说这两个对象之间是朋友关系。耦合的方式很多,依赖,关联,组合,聚合 等。其中,我们称出现成员变量,方法参数,方法返回值中的类为直接的朋友而出现在局部变量中的类不是直接的朋友。也就是说,陌生的类最好不要以局部变量的形式出现在类的内部。

理解:

1、A和B两个类,如果A调用B类的方法,那么B的方法只需要在B类中完成,直接给A返回结果即可,A类无须知道里面执行的过程,并且A类不负责B类的数据操作。

2、陌生的类不最好不要已局部变量的形式出现在类的内部。也就是说,A类使用B类,尽量在A类方法内new这个实例,应该使用传递的方式来解决。但是例如工具类,那么只能做局部变量的调用,所以迪米特法则是说好不要以局部变量的形式出现在类的内部。

实例:

23种设计模式-迪米特法则_第1张图片

23种设计模式-迪米特法则_第2张图片 

23种设计模式-迪米特法则_第3张图片 

 以上代码在B类中的方法内,出现了A类的成员变量,那么这样是违背了迪米特法则的,所以我们要将他改进

改进:

只需要将成员变量改成传递的类型即可。

23种设计模式-迪米特法则_第4张图片

 23种设计模式-迪米特法则_第5张图片

小结:

1、迪米特法则是最少知道原则,只需要提供public方法即可,不需要透漏其他信息

2、不要将不属于自己类的方法写在自己的类中处理

3、尽量不要在类的局部变量出现其他new的类,因为不属于直接朋友,如果要使用其他类,则选择类的依赖,关联,组合,聚合等

你可能感兴趣的:(设计模式,设计模式,迪米特法则)