首页 > 代码库 > GoF之迪米特法则
GoF之迪米特法则
猫拿着手枪对着老鼠说:1+1等于几?。老鼠战战兢兢的回答:等..等于2。啪…,老鼠被打死了,猫酷酷的吹着枪管说:怪只怪你知道的太多了。
我们就在这个小故事里认识最后一个原则吧。
迪米特法则(Law Of Demeter)
定义1:如果两个类不用直接通信,那么这两个类就不应当发生直接的相互作用,如果一类需要调用另一个类的某一个方法的话,需要第三方转发这个调用。
定义2:在类的结构设计上,尽量降低成员的访问权限。
优点:
迪米特法则其根本思想,是强调了类之间的松耦合,类之间的耦合越弱,越有利于复用,一个处在弱耦合的类被修改,不会对有关系的类造成影响,也就是说,信息的隐藏促进了软件的复用。
自从我们接触编程开始,就知道了软件编程的总的原则:高内聚,低耦合。无论是面向过程编程还是面向对象编程,只有使各个模块之间的耦合尽量的低,才能提高代码的复用率。低耦合的优点不言而喻,但是怎么样编程才能做到低耦合呢?那正是迪米特法则要去完成的。
深化:
迪米特法则又叫最少知道原则,最早是在1987年由美国Northeastern University的Ian Holland提出。通俗的来讲,就是一个类对自己依赖的类知道的越少越好。也就是说,对于被依赖的类来说,无论逻辑多么复杂,都尽量地的将逻辑封装在类的内部,对外除了提供的public方法,不对外泄漏任何信息。迪米特法则还有一个更简单的定义:只与直接的朋友通信。首先来解释一下什么是直接的朋友:每个对象都会与其他对象有耦合关系,只要两个对象之间有耦合关系,我们就说这两个对象之间是朋友关系。耦合的方式很多,依赖、关联、组合、聚合等。其中,我们称出现成员变量、方法参数、方法返回值中的类为直接的朋友,而出现在局部变量中的类则不是直接的朋友。也就是说,陌生的类最好不要作为局部变量的形式出现在类的内部。
接着上面的小故事:自从老鼠被打死后,其他老鼠为了能平安的生活,再不直接告诉猫自己知道什么了,就总结了一个法则——迪米特法则,它们的信条是:知道越少,活得越好。
以上的知识都比较基础,学习的时候就比较容易,最难的就是把这些原则应用到程序设计中,因为这些都是需要不断实践。
--------------------------------------结束线-----------------------------------------------
原则还不是非常的熟悉,需要继续的摸索和实践,而且是认识其他模式的基础,所以后面会有一个六大原则总结,敬请期待。
GoF之迪米特法则