迪米特法则

迪米特法则又称为最少知识原则,迪米特法则的主要用途在于控制信息的过载
定义:每一个软件单位对其他的单位都只有最少的知识而且局限于那些与本单位密切相关的软件单位。
要求:一个软件实体应当尽可能少地与其他实体发生相互作用。
原则:是对软件实体之间通信的限制,迪米特法则要求限制软件实体之间通信的宽度和深度。
迪米特法则要求在设计系统时,应该尽量减少对象之间的交互,如果两个对象之间不必彼此直接通信,那么这两个对象就不应该发生任何直接的相互作用,如果其中一个对象需要调用另一个对象的方法,可以通过“第三者”转发这个调用。
简而言之,就是通过引入一个合理的“第三者”来降低现有对象之间的耦合度。
通俗比喻:不要和“陌生人”说话(Don't talk to strangers)、只与你的直接朋友通信(Talk only to your immediate friends)等
那么他的朋友是谁呢,有一下几类,否则就是陌生人
  • 当前对象本身(this)。
  • 以参数形式传人到当前对象方法中的对象
  • 当前对象的成员对象。
  • 如果当前对象的成员对象是一个集-合,那么集-合中的元素也都是朋友。
  • 当前对象所创建的对象。
在应用迪米特法则时,一个对象只能与直接朋友发生交互,不要和“陌生人”发生直接交互。这样做可以降低系统的耦合度,一个对象的改变不会给太多其他对象带来影响。
带来的好处:
  • 如果一个系统符合迪米特法则,那么当其中某一个模块发生修改时,就会尽量少地影响其他模块,扩展会相对容易
  • 应用迪米特法则可降低系统的耦合度,使类与类之间保持松散的耦合关系。
用迪米特时候注意的点:
  • 在类的划分上,应当尽量创建松耦合的类,类之间的耦合度越低,越有利于复用,一个处在松耦合中的类一旦被修改,不会对关联的类造成太大影响;
  • 每一个类都应当尽量降低其成员变量和成员函数的访问权限;
  • 在类的设计上,只要有可能,一个类型应当设计成不变类;
  • 在对其他类的引用上,一个对象对其他对象的引用应当降到最低。

总结

用抽象构建框架,用实现扩展细节
因为抽象灵活性好,适应性广,只要抽象的合理,可以基本保持软件框架的稳定。而软件中易变的细节,我们用从抽象派生的实现类来进行扩展,当软件需要发生变化时,我们只需要根据需求派生出一个实现类来扩展就可以了。当然前提是我们的抽象要合理,要对现实的变更有前瞻性和预见性才行。
单一职责原则告诉我们实现类要职责单一;里氏替换原则告诉我们不要破坏继承体系;依赖倒置原则告诉我们要面向接口编程;接口隔离原则告诉我们在设计接口的时候要精简单一;迪米特法则告诉我们要降低耦合。开闭原则是总纲,要对扩展开放,对修改关闭
Logo

分享前沿Unity技术干货和开发经验,精彩的Unity活动和社区相关信息

更多推荐