一.什么是迪米特原则
迪米特原则也叫最少知道原则,一个类应该对其他对象保持最少的了解。如果两个类不必彼此直接通信,那么,这两个类就不应该发生直接的相互作用,如果其中一个类需要调用另一个类的某一个方法的时候,就可以通过第三者转发这个调用。
二。优点:
使对象之间的耦合降到最小,符合高内聚,低耦合的特性,从而使类具有更好的可读性和可维护性。
三。案例:
在项目中,咱们通过vuex请求数据进行页面的渲染的这个工程,页面 只负责渲染, store文件负责数据的状态的更正,页面和store文件之间 是通过 dispatch 进行联系的。所以 这个过程咱们可不可以理解为“迪米特法则”呢?dispatch 这个方法就相当于中介,将页面的渲染和请求数据的关联起来。
我们通过手机去阅读电子书这个过程,就是 打开手机,打开阅读软件,选择书籍,进行阅读.手机和阅读电子书是两个不相干的事情,但是需要阅读软件将二者进行关联。
// 定义手机类 function Phone() { console.log(‘phone‘, this) this.app = new App(); this.openPhone = function() { console.log(‘打开app‘) this.app.openApp() } }, // 定义App function App() { console.log(‘app‘, this) this.reading = new Reading(); this.openApp= function () { console.log(‘app进行阅读‘) this.reading.read() } }, // 定义阅读 function Reading() { console.log(‘reading‘, this) this.read= function () { console.log(‘开始阅读了啦啦啦‘) } } 使用: var phone = new Phone() phone.openPhone()
四。注意:
迪米特法则的初衷使降低类之间的耦合,由于每个类都减少了不必要的依赖,因此可以降低耦合关系。但是要适度,虽然可以避免与非直接的类通信,但是通信需要 一个“中介”来发生联系。就拿上面的案例来说,阅读软件就相当于“中介”,来使手机和阅读进行联系。过分的使用迪米特法则,会产生大量的中介列,导致系统复杂度变大。
原文:https://www.cnblogs.com/mn6364/p/10459199.html