设计模式的原则 - 迪米特法则(LoD)
设计模式是面向对象编程中常用的一种思想、模式与原则的综合,可以提高代码的可读性、可维护性和可扩展性。其中,迪米特法则(LoD)是一种重要的设计原则,也称为最少知识原则(LKP),其核心思想是让对象之间的耦合度最小化。
一、迪米特法则的定义
迪米特法则指出,一个对象应该对其他对象有最少的了解,只和朋友对象进行通信,而不和陌生对象进行通信,朋友对象指这样的对象:
- 当前对象本身
- 以参数形式传入到当前对象方法中的对象
- 当前对象的成员对象
- 如果当前对象是某个聚集对象的话,还可以将聚集对象本身作为朋友对象。
二、迪米特法则的优点
1. 降低类之间耦合度:迪米特法则可以降低类之间的耦合度,既然对象之间要尽量少的交流,那么自然就不会产生过分的依赖,也不会被不必要的细节信息所影响。这样可以有效地降低了代码的耦合度,提高了类的可维护性和可扩展性。
2. 增强类的复用性:降低了类之间的耦合度,意味着类的复用性增强。一个类只需要与其朋友类进行交流,减少了对非朋友类的依赖,会大大提高复用性。
3. 提高系统的拓展性:降低了类之间的耦合度,在系统的扩展过程中,系统扩展时新的类无需再与原来的类进行很大的修改。增加的这个新类只需要考虑自己本身的设计即可,不需要修改代码中很多其他类的代码。
三、迪米特法则的适用场景
当一个对象需要调用另一个对象的方法时,需要谨慎考虑是不是调用太多了,如果对象之间的交互过于频繁而复杂,那么这显然违反了迪米特法则。建议针对以下场景遵循迪米特法则:
1. 需要进行类之间解耦,设计灵活的系统结构。
2. 对象之间的通信或关系过于复杂时。
3. 希望提高系统的可维护性和可扩展性。
四、迪米特法则的注意点
1. 不能过度使用:过度使用迪米特法则会导致程序的复杂度增加,维护难度加大。
2. 合理使用:只应用在类与类之间的通信中。例如:在类与类之间进行注入,而不是直接在类中new其他的类,这是更好的使用方式。
3. 避免设计滥用:遵循迪米特法则时需要考虑实际情况,不要为了追求“只与朋友通信”而将实际需要通信的对象屏蔽,这样反而会使系统复杂度更高。
综上所述,迪米特法则是一个具有重要意义的设计原则,它可以降低类之间的耦合度,增加代码的可维护性、可扩展性和可重用性。当在设计程序时能够合理的运用这一原则时,可以有效地提高代码的质量,减少程序开发的难度。
微信扫一扫,领取最新备考资料