国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

6大設(shè)計(jì)規(guī)則-迪米特法則

這篇具有很好參考價(jià)值的文章主要介紹了6大設(shè)計(jì)規(guī)則-迪米特法則。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

tip: 作為程序員一定學(xué)習(xí)編程之道,一定要對(duì)代碼的編寫有追求,不能實(shí)現(xiàn)就完事了。我們應(yīng)該讓自己寫的代碼更加優(yōu)雅,即使這會(huì)費(fèi)時(shí)費(fèi)力。

相關(guān)規(guī)則:

推薦:體系化學(xué)習(xí)Java(Java面試專題)

1.6大設(shè)計(jì)規(guī)則-接口隔離原則
2.6大設(shè)計(jì)原則-里氏替換原則
3.6大設(shè)計(jì)規(guī)則-開(kāi)閉原則
4.6大設(shè)計(jì)規(guī)則-單一職責(zé)原則
5.6大設(shè)計(jì)規(guī)則-依賴倒置原則

迪米特法則

《設(shè)計(jì)模式之禪》第5章介紹關(guān)于迪米特法則,總結(jié)真言:只和你關(guān)系好的朋友交流。
這個(gè)真言怎么理解呢?迪米特法則在書中有個(gè)英文解釋:Only talk to your immedate friends,翻譯過(guò)來(lái)就是至于你直系的朋友溝通。按我的理解就是**“各司其職”**。

在介紹例子之前,我官方的介紹一下它,迪米特法則,也稱為最少知識(shí)原則,定義是這樣的:一個(gè)對(duì)象應(yīng)該對(duì)其他對(duì)象最少得了解。

一、關(guān)于迪米特法則的一個(gè)小例子

接下來(lái)我舉個(gè)例子說(shuō)明下:

場(chǎng)景:我們需要開(kāi)發(fā)一個(gè)首頁(yè)上展示用戶注冊(cè)數(shù)量的功能,我們需要給前端提供一個(gè)接口查詢用戶數(shù)量的。

很多同學(xué)肯定說(shuō),這我會(huì)啊,不就是controller、service、mapper的增刪改查的那一套嘛,這熟悉的不能再熟悉了。但是你可不一定能寫的規(guī)范,即使寫規(guī)范了,你知道為什么要這么寫嗎?對(duì)于這個(gè)場(chǎng)景的實(shí)現(xiàn)有兩種不規(guī)范的情況:

1、IndexController 里調(diào)用 IndexService,然后 IndexServiceImpl 里調(diào)用 UserMapper 查詢用戶數(shù)量,這種寫法可能在很多大家做過(guò)的項(xiàng)目中非常常見(jiàn),這種寫法沒(méi)有錯(cuò),只是不符合單一職責(zé)原則,并且也不符合**“功能內(nèi)聚”**的規(guī)范。

2、直接在 IndexController 里調(diào)用 UserMapper,其實(shí)這個(gè)就是不符合迪米特法則 ,Controller 很清楚的定義,就是請(qǐng)求的前置處理,處理一些接口參數(shù)校驗(yàn),包括一些轉(zhuǎn)換等,而 Service 的定義則是業(yè)務(wù)處理,如果要在 Controller 里查詢,處理業(yè)務(wù)邏輯,本身功能不會(huì)出錯(cuò),但是不符合規(guī)范,不符合迪米特法則 ,“沒(méi)有各司其職,是一種越俎代庖的表現(xiàn)”

package com.pany.camp.design.principle.demeter;

import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

/**
 *
 * @description:  用戶實(shí)現(xiàn)
 * @copyright: @Copyright (c) 2022 
 * @company: Aiocloud
 * @author: panyong 
 * @version: 1.0.0 
 * @createTime: 2023-05-30 22:55
 */
@Service
@RequiredArgsConstructor
public class UserServiceImpl implements UserService {

    private UserMapper userMapper;

    @Override
    public Integer doSearchRegisterUserNum() {
        return userMapper.findActiveUserCount();
    }
}

package com.pany.camp.design.principle.demeter;

/**
 *
 * @description: 用戶接口
 * @copyright: @Copyright (c) 2022 
 * @company: Aiocloud
 * @author: panyong 
 * @version: 1.0.0 
 * @createTime: 2023-05-30 22:54
 */
public interface UserService {
    
    /**
     * 查詢用戶注冊(cè)數(shù)量
     * 
     * @since 1.0.0
     * @param
     * @return: java.lang.Integer 
     * @author: panyong 
     * @version: 1.0.0 
     * @createTime: 2023-05-30 23:07 
     */  
    Integer doSearchRegisterUserNum();
}

package com.pany.camp.design.principle.demeter;

import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

/**
 *
 * @description:  用戶實(shí)現(xiàn)
 * @copyright: @Copyright (c) 2022 
 * @company: Aiocloud
 * @author: panyong 
 * @version: 1.0.0 
 * @createTime: 2023-05-30 22:55
 */
@Service
@RequiredArgsConstructor
public class UserServiceImpl implements UserService {

    private UserMapper userMapper;

    @Override
    public Integer doSearchRegisterUserNum() {
        return userMapper.findActiveUserCount();
    }
}

package com.pany.camp.design.principle.demeter;


/**
 *
 * @description:  用戶持久層接口
 * @copyright: @Copyright (c) 2022 
 * @company: Aiocloud
 * @author: panyong 
 * @version: 1.0.0 
 * @createTime: 2023-05-30 23:09
 */
public interface UserMapper {

    /**
     * 查詢用戶注冊(cè)數(shù)量
     *
     * @since 1.0.0
     * @param
     * @return: java.lang.Integer
     * @author: panyong
     * @version: 1.0.0
     * @createTime: 2023-05-30 23:09
     */
    Integer findActiveUserCount();
}

二、為什么要使用迪米特法則

我們面向面試說(shuō)下為什么要使用迪米特原則,因?yàn)槊嬖嚬倏赡苓@樣問(wèn)你:“你知道哪些設(shè)計(jì)規(guī)則?” 、“為什么要用這個(gè)設(shè)計(jì)規(guī)則,有什么好處,有什么還出呢?”、“舉一個(gè)使用這個(gè)規(guī)則的場(chǎng)景說(shuō)明一下”等等。

1、“為什么要用這個(gè)設(shè)計(jì)規(guī)則,有什么好處,有什么還出呢?”

迪米特法則的核心觀念就是:類之間解耦,弱耦合。耦合松了,類的復(fù)用性就提高了,以上這些事好處。如果面試還問(wèn)到了壞處?你是不是要懵了,這TM的公認(rèn)的設(shè)計(jì)規(guī)范,還有壞處?當(dāng)然,很多東西它都是把雙刃劍,解決了A問(wèn)題,那么可能引起B(yǎng)問(wèn)題。迪米特法則也不例外,它的壞處就是**類松耦合了,有可能會(huì)帶來(lái)大量的中轉(zhuǎn)調(diào)用,A要通過(guò)調(diào)用B,然后調(diào)用C,再調(diào)用D才能獲取想要的結(jié)果。**這樣調(diào)用的深度會(huì)讓系統(tǒng)的復(fù)雜度提升,從而維護(hù)成本提升。成本提升了,老板就要暴怒了,TM的讓你寫個(gè)代碼,你非要搞追求,搞情操,哈哈哈。
所以在遵循規(guī)范的同時(shí),也要權(quán)衡可讀性、維護(hù)性等因素,不可盲目炫技,為了實(shí)現(xiàn)而實(shí)現(xiàn),搞得本末倒置。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-469266.html

到了這里,關(guān)于6大設(shè)計(jì)規(guī)則-迪米特法則的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 通過(guò)簡(jiǎn)單的中介者模式模型了解迪米特法則(設(shè)計(jì)模式與開(kāi)發(fā)實(shí)踐 P14)

    雖然面向?qū)ο蠊膭?lì)將行為分布到各個(gè)對(duì)象中,把對(duì)象劃分成更小的粒度有利于對(duì)象可復(fù)用性,但有時(shí)對(duì)象之間聯(lián)系太多又會(huì)反而降低可復(fù)用性 通過(guò)一個(gè)中介者對(duì)象封裝 一組對(duì)象之間的交互 ,減少對(duì)象間直接耦合,對(duì)象之間的通信集中在中介者對(duì)象中,使得對(duì)象間交互更加簡(jiǎn)

    2024年02月07日
    瀏覽(18)
  • MySQL索引3——Explain關(guān)鍵字和索引使用規(guī)則(SQL提示、索引失效、最左前綴法則)

    MySQL索引3——Explain關(guān)鍵字和索引使用規(guī)則(SQL提示、索引失效、最左前綴法則)

    目錄 Explain 索引性能分析 Id ——select的查詢序列號(hào) Select_type——select查詢的類型 Table——表名稱 Type——select的連接類型 Possible_key ——顯示可能應(yīng)用在這張表的索引 Key——實(shí)際用到的索引 Key_len——實(shí)際索引使用到的字節(jié)數(shù) Ref??? ——索引命中的列或常量 Rows——預(yù)

    2024年02月14日
    瀏覽(18)
  • 【如何確定自己作為程序員的職業(yè)發(fā)展方向?】

    優(yōu)秀的程序員在選擇自己的職業(yè)方向時(shí),通常會(huì)考慮以下幾個(gè)因素: 興趣和熱情:程序員應(yīng)該選擇對(duì)自己有興趣并且熱情的領(lǐng)域。興趣可以保持你的工作動(dòng)力,并且更容易取得成功。 技術(shù)發(fā)展?jié)摿Γ哼x擇一個(gè)技術(shù)發(fā)展?jié)摿Υ蟮姆较蚩梢源_保你的職業(yè)長(zhǎng)期穩(wěn)定發(fā)展。例如,人

    2024年02月09日
    瀏覽(26)
  • 作為程序員,你很有必要了解一下IVX

    作為程序員,你很有必要了解一下IVX

    iVX 是一個(gè)“零代碼”的可視化編程平臺(tái),擁有方便的在線集成開(kāi)發(fā)環(huán)境,不需要下載開(kāi)發(fā)環(huán)境,打開(kāi)瀏覽器即可隨時(shí)隨地進(jìn)行項(xiàng)目編輯。iVX 還擁有“一站式”的云資源,通過(guò)這一套一站式服務(wù),iVX 可以實(shí)現(xiàn)一站式研發(fā)、一站式部署、一站式維護(hù)。iVX相當(dāng)于“一款零代碼可視

    2024年02月15日
    瀏覽(25)
  • 作為一個(gè)程序員一定要掌握的算法之遺傳算法

    作為一個(gè)程序員一定要掌握的算法之遺傳算法

    目錄 一、引言 1.1 目的 1.2 意義 二、遺傳算法介紹 2.1 遺傳算法的基本思想 2.2 遺傳算法與其他算法的主要區(qū)別 2.3 基于Java的遺傳算法設(shè)計(jì)思想 三、遺傳算法的具體實(shí)現(xiàn) 3.1?系統(tǒng)功能模塊圖和說(shuō)明 3.2 代碼和說(shuō)明 3.2.1 初始化 3.2.2 選擇運(yùn)算 3.2.3 交叉運(yùn)算 3.2.4 變異運(yùn)算 3.2.5 主函

    2024年02月15日
    瀏覽(95)
  • chatGPT4問(wèn)世,作為一個(gè)程序員應(yīng)當(dāng)如何去理解?

    chatGPT4問(wèn)世,作為一個(gè)程序員應(yīng)當(dāng)如何去理解?

    前幾年 AI 發(fā)展也遇到過(guò)許多瓶頸,甚至很多AI投資者因?yàn)榧夹g(shù)得不到突破而破產(chǎn)。但近幾年AI技術(shù)飛速發(fā)展,特別是今天的主題chatGPT 第一次問(wèn)世還只是一個(gè)幫學(xué)生寫作業(yè)的工具,第二次迭代即可完成大部分市場(chǎng)業(yè)務(wù),回答很多刁鉆的問(wèn)題。 有人測(cè)試過(guò)問(wèn)chatGPT一些很難以回答

    2023年04月10日
    瀏覽(19)
  • 作為一名程序員,如何寫出一手讓同事膜拜的漂亮代碼?

    作為一名程序員,如何寫出一手讓同事膜拜的漂亮代碼?

    整潔的代碼 有意義的命名 函數(shù)命名 變量命名 函數(shù)的定義 注釋的規(guī)范 代碼的長(zhǎng)度 代碼的對(duì)齊 我寫代碼已經(jīng)有好幾年了,最近看了一本書叫做《代碼整潔之道》。我發(fā)現(xiàn)這本書中介紹的一些內(nèi)容對(duì)我來(lái)說(shuō)非常有啟發(fā)性。書中提到的一些方法和技巧讓我重新審視了自己的代碼

    2024年02月02日
    瀏覽(25)
  • 【作為程序員,你有什么讓人眼前一亮的代碼實(shí)現(xiàn)方式?】

    隨著科技的不斷發(fā)展,編程語(yǔ)言也在不斷更新和改進(jìn)。作為程序員,我們需要選取一種適合自己的高級(jí)編程語(yǔ)言來(lái)完成項(xiàng)目任務(wù)。下面將介紹常見(jiàn)的三種高級(jí)編程語(yǔ)言:Python、Java和C++。 Python Python是一種高級(jí)編程語(yǔ)言,具有簡(jiǎn)單易學(xué)、可讀性強(qiáng)、效率高等特點(diǎn)。它廣泛應(yīng)用于

    2024年02月06日
    瀏覽(27)
  • 什么?作為程序員你還不知道人工智能搜索引擎?

    什么?作為程序員你還不知道人工智能搜索引擎?

    作者 :明明如月學(xué)長(zhǎng), CSDN 博客專家,螞蟻集團(tuán)高級(jí) Java 工程師,《性能優(yōu)化方法論》作者、《解鎖大廠思維:剖析《阿里巴巴Java開(kāi)發(fā)手冊(cè)》》、《再學(xué)經(jīng)典:《EffectiveJava》獨(dú)家解析》專欄作者。 熱門文章推薦 : (1)《人工智能時(shí)代,軟件工程師們將會(huì)被取代?》 (2)

    2024年02月10日
    瀏覽(40)
  • 【Github】作為程序員不得不知道的幾款Github加速神器

    【Github】作為程序員不得不知道的幾款Github加速神器

    眾所周知,近幾年國(guó)內(nèi)用戶在訪問(wèn) Github 時(shí),經(jīng)常間歇性無(wú)法訪問(wèn) Github 。 接下來(lái)推薦幾款 作為程序員不得不知道的 Github加速神器 。 FastGithub 是一款 Github 加速神器,解決github打不開(kāi)、用戶頭像無(wú)法加載、releases無(wú)法上傳下載、git-clone、git-pull、git-push失敗等問(wèn)題。 它支持多

    2024年02月12日
    瀏覽(24)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包