【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
迪米特法则: 一个软件实体应当尽可能少地与其它实体发生相互作用.
如果一个系统符合迪米特法则, 那么当其中某一个模块发生修改时, 就会尽量少地影响其他模块, 扩展会相对容易, 这是对软件实体之间通信的限制, 迪米特法则要求限制软件实体之间通信的宽度和深度. 迪米特法则可降低系统的耦合度, 使类与类之间保持松散的耦合关系.
迪米特法则还有几种定义形式, 包括: 不要和"陌生人"说话, 只与你的直接朋友通信等, 在迪米特法则中, 对于一个对象他的朋友包括以下几类:
- 当前对象本身.
- 以参数形式传入当前对象/方法中的对象.
- 当前对象的成员对象.
- 如果当前对象的成员对象是一个集合, 那么集合中的元素也都是朋友.
- 当前对象所创建的对象.
任何一个对象, 在满足上面的条件之一, 就是当前对象的朋友, 否则就是陌生人. 在应用迪米特法则时, 一个对象只能与直接朋友发生交互, 不要和陌生人发生直接交互, 这丫很难过做可以降低系统的耦合度, 一个对象的改变不会给太多其他度夏宁带来影响.
迪米特法则要求我们在设计系统时候, **应该尽量减少系统之间的交互, 如果两个对象之间不必彼此直接通信, 那么这两个对象就不应该发生任何的直接的相互作用, 如果其中一个对象需要调用另一个对象的某一个方法, 可以通过第三者转发这个调用. **简言之. 就是通过引入一个合理的第三者来降低现有对象之间的耦合度.
在将迪米特法则运用到系统设计中时候, 要注意以下几点: 在类的划分上, 应当尽量创建松耦合的类, 类之间的耦合度越低, 就越有利于复用, 一个处于松耦合的类一旦被修改, 不会对关联的类造成太大的波及; 子啊类的结构设计上, 每一个类都应该尽量降低其成员变量和成员函数的访问权限; 在类的设计上, 只要有可能, 一个类型应当被设计成不变类; 在对其它类的引用上, 一个对象对其它对象的引用应当降到最低.
更多详情请参考原文:
Reference: http://blog.csdn.net/lovelion/article/details/7563445
来源:oschina
链接:https://my.oschina.net/u/2501614/blog/787191