面向对象设计准则:迪米特法则(Law of Demeter)

面向对象设计原则:迪米特法则(Law of Demeter)

面向对象设计原则:迪米特法则(Law of Demeter)

热爱生活,享受娱乐,专注技术,欢迎关注微信公众号QGer,我们一起见证成长!
面向对象设计准则:迪米特法则(Law of Demeter)
什么是迪米特法则?

  • 官方解释:一个对象应当对其他对象有尽可能少的了解。 *
  • 通俗解释:一个软件实体应当尽可能少的与其他实体发生相互作用。每一个软件单位对其他的单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位。

为什么遵循迪米特法则?

- 当一个类与其他类之间依赖关系越多,耦合度越大时,类发生变化将会导致影响面越大、越广。而遵循迪米特法则就是为了尽量降低类与类之间的耦合度,什么是耦合度呢?就是一个类与其他类之间的联系、依赖程度。当一个类对其他类的依赖很少,变更所带来的影响面很小,自身功能模块具有独立性的时候,这个类就是一个低耦合、高内聚的优秀类。

- 这样的类当其中某一个模块发生修改时,就会尽量少地影响其他模块,扩展会相对容易,这是对软件实体之间通信的限制,迪米特法则要求限制软件实体之间通信的宽度和深度。迪米特法则可降低系统的耦合度,使类与类之间保持松散的耦合关系。

如何遵循迪米特法则?

  • 迪米特法则又叫最少知识原则,定义:不要和“陌生人”说话,只与你的直接朋友通信联系。
  • 朋友的定义:对象本身、类方法的(输入输出)参数、类成员。而出现在局部变量中的类就不是直接的朋友,即“陌生人”。

  • 迪米特法则要求我们:在设计系统时,尽量减少对象之间的联系、交互、依赖。因为两个对象之间若不相互依赖、联系,那么这两个对象就不会发生任何相互作用,如果一定要发生联系的话,可以借用第三方进行转发调用(可参考门面模式Facade)。

  • 个人感受,迪米特法则和其他的几大原则也是有紧密的联系的,单一职责原则(一个类只做一件事)减少了与其他对象依赖的可能性,依赖倒置原则(尽量依赖抽象层次高的类、接口)则减少了依赖对像后发生变更的影响面,接口隔离原则(客户端不应该依赖它不需要的接口)同样的减少了与其他对象产生联系的可能性、提升了类的内聚。等等诸如此类,个人感觉,优秀的、经验证正确的设计原则之间都是有共同性了,遵循了其中一个,那么肯定会在其中找到另一个原则的影子,万物相生相息,有一定的共通性。