亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時(shí)間:2021年10月14日 09:52:50   作者:guoyp2126  
這篇文章主要為大家介紹了java面向?qū)ο笤O(shè)計(jì)原則之迪米特法則的示例分析詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,學(xué)有所得

概念

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

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

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í),一定會(huì)影響到A,不符合迪米特法則。按照迪米特法則的要求可修改為:

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)。
迪米特法則又叫做最少知識(shí)原則(LKP),就是說,一個(gè)對(duì)象應(yīng)當(dāng)對(duì)其他對(duì)象有盡可能少的了解。通俗的講“不和陌生人講話,只和朋友交流”,上述示例中類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.對(duì)于預(yù)期會(huì)發(fā)生較大變化的模塊,增加一個(gè)外觀層,簡化和穩(wěn)定高層模塊的調(diào)用關(guān)系,與不穩(wěn)定部分脫耦。

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

拓展

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

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

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

 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即可,不會(huì)影響到調(diào)用頁面的代碼
4. 設(shè)計(jì)模式中對(duì)象適配器、代理模式、門面模式等均體現(xiàn)了迪米特法則的思想。

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

相關(guān)文章

  • 自定義一個(gè)異常類模板的簡單實(shí)例

    自定義一個(gè)異常類模板的簡單實(shí)例

    下面小編就為大家?guī)硪黄远x一個(gè)異常類模板的簡單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-10-10
  • js中去除字符串中所有的html標(biāo)簽代碼實(shí)例

    js中去除字符串中所有的html標(biāo)簽代碼實(shí)例

    這篇文章主要介紹了js中去除字符串中所有的html標(biāo)簽代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Spring MVC 處理一個(gè)請求的流程

    Spring MVC 處理一個(gè)請求的流程

    Spring MVC是Spring系列框架中使用頻率最高的部分。不管是Spring Boot還是傳統(tǒng)的Spring項(xiàng)目,只要是Web項(xiàng)目都會(huì)使用到Spring MVC部分。因此程序員一定要熟練掌握MVC部分。本篇博客簡要分析Spring MVC處理一個(gè)請求的流程。
    2021-02-02
  • Windows環(huán)境下重啟jar服務(wù)bat代碼的解決方案

    Windows環(huán)境下重啟jar服務(wù)bat代碼的解決方案

    在Windows環(huán)境下部署java的jar包,若有多個(gè)服務(wù)同時(shí)啟動(dòng),很難找到相應(yīng)服務(wù)重啟,每次都重啟全部服務(wù)很麻煩,應(yīng)用場景大多用于部署測試,今天給大家分享Windows環(huán)境下重啟jar服務(wù)bat代碼,感興趣的朋友一起看看吧
    2023-08-08
  • SpringBoot+Redis實(shí)現(xiàn)接口防刷的示例代碼

    SpringBoot+Redis實(shí)現(xiàn)接口防刷的示例代碼

    在實(shí)際開發(fā)中,會(huì)出現(xiàn)用戶多次點(diǎn)擊發(fā)送請求,本文主要介紹了SpringBoot+Redis實(shí)現(xiàn)接口防刷的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • SpringCloud Eureka實(shí)現(xiàn)服務(wù)注冊與發(fā)現(xiàn)

    SpringCloud Eureka實(shí)現(xiàn)服務(wù)注冊與發(fā)現(xiàn)

    Eureka是一種基于REST(具像狀態(tài)傳輸)的服務(wù),主要用于AWS云中定位服務(wù),以實(shí)現(xiàn)中間層服務(wù)器的負(fù)載平衡和故障轉(zhuǎn)移。本文記錄一個(gè)簡單的服務(wù)注冊與發(fā)現(xiàn)實(shí)例。感興趣的小伙伴們可以參考一下
    2019-01-01
  • Java實(shí)現(xiàn)插入公式到PPT的示例代碼

    Java實(shí)現(xiàn)插入公式到PPT的示例代碼

    PPT中可插入公式,用于放映時(shí)演示相關(guān)內(nèi)容的論證、推算的依據(jù)。通過代碼,我們可借助特定的工具來實(shí)現(xiàn)在PPT中的插入公式,本文將對(duì)此作詳細(xì)介紹
    2022-07-07
  • SpringBoot+JWT實(shí)現(xiàn)注冊、登錄、狀態(tài)續(xù)簽流程分析

    SpringBoot+JWT實(shí)現(xiàn)注冊、登錄、狀態(tài)續(xù)簽流程分析

    這篇文章主要介紹了SpringBoot+JWT實(shí)現(xiàn)注冊、登錄、狀態(tài)續(xù)簽【登錄保持】,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • 解決Swagger修改請求對(duì)象字段文檔不更新問題

    解決Swagger修改請求對(duì)象字段文檔不更新問題

    這篇文章主要為大家介紹了解決Swagger修改請求對(duì)象字段文檔不更新的問題,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • SpringMVC文件上傳的配置實(shí)例詳解

    SpringMVC文件上傳的配置實(shí)例詳解

    本文通過實(shí)例代碼給大家介紹SpringMVC文件上傳的配置相關(guān)內(nèi)容,本文介紹的非常詳細(xì),具有參考借鑒價(jià)值,感興趣的朋友一起學(xué)習(xí)吧
    2016-05-05

最新評(píng)論