国产探花免费观看_亚洲丰满少妇自慰呻吟_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)。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 涟源市| 佛坪县| 敦化市| 红安县| 厦门市| 疏勒县| 武夷山市| 云霄县| 北川| 绍兴县| 江源县| 汝城县| 佛冈县| 怀安县| 双柏县| 麻江县| 西华县| 云浮市| 石景山区| 蕉岭县| 永清县| 邻水| 仙居县| 临泽县| 弋阳县| 荥阳市| 华宁县| 博乐市| 宁蒗| 吐鲁番市| 梧州市| 文化| 伊宁县| 大埔县| 房产| 阳原县| 明溪县| 侯马市| 揭东县| 万盛区| 平罗县|