国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

理解Java設計模式編程中的迪米特原則

2019-11-26 14:37:48
字體:
來源:轉載
供稿:網友

定義:一個對象應該對其他對象保持最少的了解。
問題由來:類與類之間的關系越密切,耦合度越大,當一個類發生改變時,對另一個類的影響也越大。
解決方案:盡量降低類與類之間的耦合。
         自從我們接觸編程開始,就知道了軟件編程的總的原則:低耦合,高內聚。無論是面向過程編程還是面向對象編程,只有使各個模塊之間的耦合盡量的低,才能提高代碼的復用率。低耦合的優點不言而喻,但是怎么樣編程才能做到低耦合呢?那正是迪米特法則要去完成的。
         迪米特法則又叫最少知道原則,最早是在1987年由美國Northeastern University的Ian Holland提出。通俗的來講,就是一個類對自己依賴的類知道的越少越好。也就是說,對于被依賴的類來說,無論邏輯多么復雜,都盡量地的將邏輯封裝在類的內部,對外除了提供的public方法,不對外泄漏任何信息。迪米特法則還有一個更簡單的定義:只與直接的朋友通信。首先來解釋一下什么是直接的朋友:每個對象都會與其他對象有耦合關系,只要兩個對象之間有耦合關系,我們就說這兩個對象之間是朋友關系。耦合的方式很多,依賴、關聯、組合、聚合等。其中,我們稱出現成員變量、方法參數、方法返回值中的類為直接的朋友,而出現在局部變量中的類則不是直接的朋友。也就是說,陌生的類最好不要作為局部變量的形式出現在類的內部。

下面是一個違反迪米特原則的例子:

public class Teacher {  public void teach(Classes classes){   classes.getStudents.getScore.show();  } } 


存在什么問題呢?耦合性太高。
1. Student 類中可能會取消Score類。
2. Score類的show方法也可能會被刪除。
Student類,Score類對于你來說都是陌生的,當他們改變時,你可能都不知道。
我們可以修改成:

public class Teacher {  public void teach(Classes classes){   classes.showScore();  } }  public class Classes {  public void showScore(Student student){   student.showScore();  } }  public class Student {  Score score;  public void showScore(){   score = new Score(80);   score.show();  } } 


總結:
1. 迪米特法則的優點在于降低類之間的耦合。
2. 缺點是會產生比較多的小方法,讓系統變得比較凌亂,而且通信效率會降低。
3. 設計模式中的應用:門面模式(Facade Pattern)和中介模式(Mediator Pattern)。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 石河子市| 淮北市| 商丘市| 安宁市| 怀柔区| 临汾市| 枞阳县| 桑日县| 松桃| 临湘市| 金山区| 原平市| 淮北市| 嵊州市| 枣阳市| 河池市| 龙里县| 独山县| 玉树县| 亚东县| 翁源县| 大理市| 古蔺县| 鹿邑县| 桂林市| 定远县| 海淀区| 鹤峰县| 广宗县| 泸州市| 东丽区| 石楼县| 枣庄市| 什邡市| 托克逊县| 永吉县| 青龙| 永州市| 彰武县| 明星| 遂宁市|