日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

迪米特法则(Law of Demeter) 简介

發布時間:2025/3/20 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 迪米特法则(Law of Demeter) 简介 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在Java里class設計經常會提到一些個原則或者規則


最出名的莫非是 封閉-開放原則了(closed-open principle)

而這次這個 Law of Demeter 也是挺重要的.


一, 迪米特法則(Law of Demeter)的定義

迪米特法則(Law of Demeter)又叫作最少知識原則(Least Knowledge Principle 簡寫LKP),就是說一個對象應當對其他對象有盡可能少的了解,不和陌生人說話。英文簡寫為: LoD.



解釋:

通常只看定義是不能理解的...


我們可以把這個法則分拆性兩點.


1. 類設計中, 盡量降低成員的訪問權限(最低是Private)

2. 類A 假如 不認識 類B, 那么類B不能直接訪問類A的方法.


3. 假如類B要訪問類A,? 那么類B可以借組 第三個類C來實現,? ( 類C是類A認識的類).





二,一個例子

例如我們可以找聯通客服mm來查詢手機月費信息.


但是我們不能直接找聯通的客服人員, 因為我們沒有聯通客服的私人號碼.


這樣則說明, 聯通客服人員的服務方法不是Public的, 一般人不能直接訪問.


SupportMM: 位于service包內

package lawOfDemeter.service;import lawOfDemeter.Customer;public class SupportMM {private String name;protected SupportMM(String name){this.name = name;}protected void service(Customer c){System.out.println("Hello i am " + this.name);} }

可見她的構造函數和service方法都是包內訪問的.


CustomerService: 位于service包內

這個是客服類.

客服類與客服MM類處于同1個包內,

客服類有個查找空閑mm的方法, 并且讓空閑的mm去接客.


但是客服的service方法是對外的(public)

也就說所有客戶都可以直接訪問客服.


package lawOfDemeter.service;import lawOfDemeter.Customer;public class CustomerService {public static void service(Customer c){getFreeSupport().service(c);}private static SupportMM getFreeSupport(){return new SupportMM("Inne"); // just a sample} }


Customer: 位于service包外

由于在包外, 所以Customer是不能直接訪問SupportMM的


package lawOfDemeter;import lawOfDemeter.service.*; public class Customer {public void askHelp(){CustomerService.service(this);} }
但是它可以通過客服來間接獲得supportMM的服務.


UML:








三,小結

上面的那個例子是符合law of demeter的

它有什么優點呢.


就是當我們修改supportMM的內容時,? customer并不會受到任何影響.


也就是 松耦合的好處.


其實所有設計模式的目的無非兩點:


1. 另業務思路更加清晰

2. 便于修改和擴展
















總結

以上是生活随笔為你收集整理的迪米特法则(Law of Demeter) 简介的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。