一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - 理解Java設計模式編程中的迪米特原則

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

2020-03-27 19:14lixiang0522 JAVA教程

這篇文章主要介紹了Java設計模式編程中的迪米特原則,迪米特原則旨在降低類與類之間的耦合,需要的朋友可以參考下

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

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

?
1
2
3
4
5
public class Teacher {
 public void teach(Classes classes){
  classes.getStudents.getScore.show();
 }
}


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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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)。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: bbbxxx乱大交欧美小说 | 白虎喷水 | 久久精品熟女亚洲AV国产 | 毛片免费毛片一级jjj毛片 | 午夜影院免费体验 | 亚洲AV蜜桃永久无码精品无码网 | 三级黄色片在线免费观看 | 我的漂亮朋友在线观看全集免费 | 亚洲成人免费观看 | 国产欧美日韩专区毛茸茸 | 亚洲国产在线午夜视频无 | 天天操丝袜 | 91会员 | 被老头肉至怀孕小说 | 国产清纯白嫩大学生正在播放 | 二次元美女挤奶漫画 | 91香蕉视频导航 | 国产香蕉在线视频 | 黑人巨茎大战欧美白妇 | 精品视频在线观看免费 | yy3341殇情影院理论片 | anal22日本人视频 | 日本免费一区二区三区四区五六区 | 夫承子液by免费阅读 | 国产一卡二卡3卡4卡四卡在线 | 从后面撕开老师的丝袜动态图 | 日韩在线视频二区 | 色婷婷影院在线视频免费播放 | 国产实拍会所女技师在线 | 国内自拍视频在线观看 | 亚洲国产成人在线视频 | 99视频在线看观免费 | 日本人成在线视频免费播放 | 色操网| 久久一本岛在免费线观看2020 | 海绵宝宝第二季全集免费观看 | 赤坂丽女医bd无删减在线观看 | 忘忧草秋观看未满十八 | 全彩调教侵犯h本子全彩妖气he | 好大好长好紧爽免费 | 亚洲另类中文字幕 |