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

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - java面向?qū)ο笤O(shè)計(jì)原則之迪米特法則分析詳解

java面向?qū)ο笤O(shè)計(jì)原則之迪米特法則分析詳解

2022-02-19 14:49guoyp2126 Java教程

這篇文章主要為大家介紹了java面向?qū)ο笤O(shè)計(jì)原則之迪米特法則的示例分析詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,學(xué)有所得

概念

迪米特法則解決類與類之間耦合度問題,如果類A調(diào)用了B類的某一個(gè)方法,則這兩個(gè)類就形成了一種緊耦合的方式,當(dāng)B類這個(gè)方法發(fā)生變化時(shí),一定會影響A類的執(zhí)行結(jié)果。迪米特法則要求每一個(gè)類盡可能少的與其他類發(fā)生關(guān)系,也就是盡可能少的讓其他類發(fā)生變化時(shí),對其代碼的執(zhí)行結(jié)果產(chǎn)生的影響降到最低。

典型情況:A類調(diào)用B類的方法,B類和C類是一種關(guān)聯(lián)關(guān)系,如果A類通過B類所持有的C類對象直接調(diào)用C類的方法,則A類和C類同時(shí)擁有強(qiáng)耦合的關(guān)系。代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class B {
    public C c = new C();
}
public class C {
    public void fun()
    {
        //相關(guān)代碼
    }
}
public class A {
    public void show(){
        B b = new B();
        b.c.fun();
    }
}

這種調(diào)用A和C之間形成一種強(qiáng)耦合,當(dāng)C中fun代碼發(fā)生變化時(shí),一定會影響到A,不符合迪米特法則。按照迪米特法則的要求可修改為:

?
1
2
3
4
5
6
7
8
9
10
11
12
public class B {
    private C c = new C();
    public void fun(){
       c.fun();
    }
}
public class A {
    public void show(){
        B b = new B();
        b.fun();
    }
}

A和C代碼完全脫耦,當(dāng)C的fun代碼發(fā)生變化時(shí),只需要修改類B中fun代碼;當(dāng)A中業(yè)務(wù)邏輯發(fā)生變化時(shí),需要修改B中fun代碼,也只需修改B中代碼,和C中代碼無關(guān)。
迪米特法則又叫做最少知識原則(LKP),就是說,一個(gè)對象應(yīng)當(dāng)對其他對象有盡可能少的了解。通俗的講“不和陌生人講話,只和朋友交流”,上述示例中類A和類B是朋友,和類C是陌生人。

使用

迪米特法則解決了類之間耦合度問題,使得類與類之間的接口通訊變得簡單,提高了可維護(hù)性,但同時(shí)也增加了調(diào)用層次和復(fù)雜度。但以下情況一定要使用迪米特法則規(guī)避風(fēng)險(xiǎn)。

1.使用第三方組件或者控件時(shí),增加一個(gè)包裝器的類,使得調(diào)用方和第三方組件完全脫耦,如桌面程序中使用XP style一組控件屬于第三方控件,每個(gè)控件增加一個(gè)包裝器類,無論什么時(shí)間,XP style控件不能使用時(shí),如:免費(fèi)突然變收費(fèi),我們只需要修改包裝器類中代碼即可。

2.對于預(yù)期會發(fā)生較大變化的模塊,增加一個(gè)外觀層,簡化和穩(wěn)定高層模塊的調(diào)用關(guān)系,與不穩(wěn)定部分脫耦。

3.對付團(tuán)隊(duì)新成員或代碼質(zhì)量較差程序員,增加一個(gè)外觀層,避免因頻繁的修改,造成整個(gè)程序掛掉。

拓展

1.意思就是降低各個(gè)對象之間的耦合,提高系統(tǒng)的可維護(hù)性;

2.迪米特法則是一種設(shè)計(jì)思想,不僅僅體現(xiàn)在對象與對象的之間的耦合度問題上,而是廣泛應(yīng)用到各種分層結(jié)構(gòu)中層與層之間的關(guān)系,每個(gè)層之間形成一種隔離關(guān)系,調(diào)用無需了解層內(nèi)部及更下一級層的調(diào)用關(guān)系。如MVP模式,P將M和V結(jié)合起來,使得M和V都可以獨(dú)立的進(jìn)行變化,任何一方的變化僅影響到P層代碼的變化。

3.前端開發(fā)時(shí)使用獨(dú)立出來的API就是迪米特法則的要求,如:

?
1
2
3
4
var api = {
  adminLogin: (param) => post(apiBase+"/sys/login", param),
  userLogin: (param) => post(apiBase+"/sys/weblogin", param),
  }

頁面調(diào)用時(shí)只需要調(diào)用api中定義的adminLogin方法,當(dāng)后端定義的路勁名apiBase、方法名login發(fā)生變化時(shí),只修改api即可,不會影響到調(diào)用頁面的代碼
4. 設(shè)計(jì)模式中對象適配器、代理模式、門面模式等均體現(xiàn)了迪米特法則的思想。

以上就是java面向?qū)ο笤O(shè)計(jì)原則之迪米特法則分析詳解的詳細(xì)內(nèi)容,更多關(guān)于java面向?qū)ο笤O(shè)計(jì)原則的資料請關(guān)注服務(wù)器之家其它相關(guān)文章!

原文鏈接:https://blog.csdn.net/guoyp2126/article/details/114074525

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: ferr孕妇videos毛茸茸 | 男人狂躁女人下面狂叫图片 | 欧美老人与小伙子性生交 | 五月天精品视频在线观看 | 俄罗斯三级在线观看级 | 91尤物在线视频 | 四虎网址 | 亚洲可乐操 | 国产精品久久久久久久久免费hd | 亚洲精品6久久久久中文字幕 | 亚洲国产精品久久精品成人网站 | 欧美男女爱爱视频 | 激情六月丁香婷婷四房播 | 美女脱了内裤打开腿让人羞羞软件 | 全日爱韩国视频在线观看 | 外国老少性配 | tolove第一季动画在线看 | 亚洲冬月枫中文字幕在线看 | 色妞视频一级毛片 | 午夜私人影院在线观看 视频 | 欧美性一级交视频 | 97伊人久久精品亚洲午夜 | 甜蜜调教| 欧美18-19sex性处视频 | 日韩精品在线视频观看 | 久久福利影院 | 日韩香蕉视频 | 97se亚洲国产综合自在线观看 | 青苹果乐园影院免费观看完整版 | 欧洲美女bbbxxxxxx | 国产精品酒店视频免费看 | 日本爽p大片免费观看 | 久草青青在线 | 猥琐对着美女飞机喷到脸上 | 四影虎库最新2021 | 色综合色综合 | 欧式午夜理伦三级在线观看 | 国产青草亚洲香蕉精品久久 | 99久久久久国产精品免费 | 91精品国产人成网站 | 毛片小视频|