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

小談設(shè)計(jì)模式(12)—迪米特法則

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

專欄介紹

專欄地址

專欄介紹

主要對(duì)目前市面上常見的23種設(shè)計(jì)模式進(jìn)行逐一分析和總結(jié),希望有興趣的小伙伴們可以看一下,會(huì)持續(xù)更新的。希望各位可以監(jiān)督我,我們一起學(xué)習(xí)進(jìn)步,加油,各位。
小談設(shè)計(jì)模式(12)—迪米特法則,細(xì)解設(shè)計(jì)模式,設(shè)計(jì)模式,迪米特法則

迪米特法則

迪米特法則(Law of Demeter)也被稱為最少知識(shí)原則(Least Knowledge Principle),是一種面向?qū)ο笤O(shè)計(jì)的原則,它強(qiáng)調(diào)一個(gè)對(duì)象應(yīng)該盡量減少與其他對(duì)象之間的相互依賴。
小談設(shè)計(jì)模式(12)—迪米特法則,細(xì)解設(shè)計(jì)模式,設(shè)計(jì)模式,迪米特法則

核心思想

盡量減少對(duì)象之間的相互依賴,使對(duì)象之間的耦合度降低。具體來說,它強(qiáng)調(diào)一個(gè)對(duì)象應(yīng)該只與其直接的朋友進(jìn)行交互,而不與陌生的對(duì)象進(jìn)行直接交互。

這里的“朋友”指

小談設(shè)計(jì)模式(12)—迪米特法則,細(xì)解設(shè)計(jì)模式,設(shè)計(jì)模式,迪米特法則

當(dāng)前對(duì)象本身

一個(gè)對(duì)象可以調(diào)用自身的方法,因?yàn)樗鼘?duì)自身的結(jié)構(gòu)和行為是了解的。

以參數(shù)形式傳入當(dāng)前對(duì)象的對(duì)象

一個(gè)對(duì)象可以調(diào)用作為參數(shù)傳入的對(duì)象的方法,因?yàn)樗鼘?duì)傳入的對(duì)象的結(jié)構(gòu)和行為是了解的。

當(dāng)前對(duì)象的成員變量直接引用的對(duì)象

一個(gè)對(duì)象可以調(diào)用它的成員變量直接引用的對(duì)象的方法,因?yàn)樗鼘?duì)成員變量引用的對(duì)象的結(jié)構(gòu)和行為是了解的。

目標(biāo)

降低對(duì)象之間的耦合度,提高系統(tǒng)的可維護(hù)性、可擴(kuò)展性和可復(fù)用性。通過限制對(duì)象之間的直接交互,減少了對(duì)象之間的依賴關(guān)系,使系統(tǒng)更加靈活、易于修改和測試。

遵循迪米特法則可以使系統(tǒng)的設(shè)計(jì)更加模塊化,每個(gè)對(duì)象只需要關(guān)注自身的職責(zé),而不需要了解其他對(duì)象的內(nèi)部細(xì)節(jié)。這樣可以降低系統(tǒng)的復(fù)雜性,提高代碼的可讀性和可維護(hù)性。同時(shí),迪米特法則也有助于提高系統(tǒng)的可擴(kuò)展性,因?yàn)闇p少了對(duì)象之間的直接依賴,新增功能時(shí)只需要修改少量的對(duì)象即可。
小談設(shè)計(jì)模式(12)—迪米特法則,細(xì)解設(shè)計(jì)模式,設(shè)計(jì)模式,迪米特法則

Java程序?qū)崿F(xiàn)

// 定義一個(gè)學(xué)生類
class Student {
    private String name;

    public Student(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

// 定義一個(gè)班級(jí)類
class Class {
    private String className;
    private List<Student> students;

    public Class(String className, List<Student> students) {
        this.className = className;
        this.students = students;
    }

    public String getClassName() {
        return className;
    }

    public List<Student> getStudents() {
        return students;
    }
}

// 定義一個(gè)學(xué)校類
class School {
    private String schoolName;
    private List<Class> classes;

    public School(String schoolName, List<Class> classes) {
        this.schoolName = schoolName;
        this.classes = classes;
    }

    public String getSchoolName() {
        return schoolName;
    }

    public List<Class> getClasses() {
        return classes;
    }
}

// 客戶端代碼
public class Main {
    public static void main(String[] args) {
        // 創(chuàng)建學(xué)生對(duì)象
        Student student1 = new Student("Tom");
        Student student2 = new Student("Jerry");

        // 創(chuàng)建班級(jí)對(duì)象
        List<Student> students = new ArrayList<>();
        students.add(student1);
        students.add(student2);
        Class class1 = new Class("Class1", students);

        // 創(chuàng)建學(xué)校對(duì)象
        List<Class> classes = new ArrayList<>();
        classes.add(class1);
        School school = new School("School1", classes);

        // 輸出學(xué)校的名稱和班級(jí)的名稱
        System.out.println("School Name: " + school.getSchoolName());
        for (Class c : school.getClasses()) {
            System.out.println("Class Name: " + c.getClassName());
        }

        // 輸出班級(jí)中的學(xué)生姓名
        for (Class c : school.getClasses()) {
            for (Student s : c.getStudents()) {
                System.out.println("Student Name: " + s.getName());
            }
        }
    }
}

程序分析

學(xué)生類、班級(jí)類和學(xué)校類之間的關(guān)系是符合迪米特法則的。學(xué)生類只與班級(jí)類有直接的關(guān)聯(lián),班級(jí)類只與學(xué)校類有直接的關(guān)聯(lián),而學(xué)生類和學(xué)校類之間沒有直接的關(guān)聯(lián)。這樣可以降低對(duì)象之間的耦合度,提高系統(tǒng)的靈活性和可維護(hù)性。

在客戶端代碼中,我們創(chuàng)建了一個(gè)學(xué)校對(duì)象,然后通過學(xué)校對(duì)象獲取班級(jí)對(duì)象和學(xué)生對(duì)象,并輸出它們的信息。通過迪米特法則,我們可以看到客戶端代碼只需要與學(xué)校類進(jìn)行交互,而不需要了解班級(jí)類和學(xué)生類的內(nèi)部細(xì)節(jié),這樣可以降低客戶端代碼與其他類的直接依賴,使系統(tǒng)更加靈活和易于維護(hù)。
小談設(shè)計(jì)模式(12)—迪米特法則,細(xì)解設(shè)計(jì)模式,設(shè)計(jì)模式,迪米特法則

總結(jié)

迪米特法則強(qiáng)調(diào)了對(duì)象之間的松耦合設(shè)計(jì),通過減少對(duì)象之間的直接依賴,提高系統(tǒng)的靈活性和可維護(hù)性。遵循迪米特法則可以使系統(tǒng)更加模塊化、可擴(kuò)展和易于測試。文章來源地址http://www.zghlxwxcb.cn/news/detail-723715.html

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

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(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)文章

  • 迪米特法則

    迪米特法則,也稱為最少知識(shí)原則(Law of Demeter),是面向?qū)ο笤O(shè)計(jì)中的一個(gè)原則,旨在降低對(duì)象之間的耦合性,提高系統(tǒng)的可維護(hù)性和可擴(kuò)展性。該原則強(qiáng)調(diào)一個(gè)類不應(yīng)該直接與其它不相關(guān)的類相互交互,而是通過少數(shù)幾個(gè)密切相關(guān)的類來進(jìn)行通信。這有助于減少類之間的

    2024年02月12日
    瀏覽(16)
  • 小談設(shè)計(jì)模式(20)—組合模式

    小談設(shè)計(jì)模式(20)—組合模式

    link 主要對(duì)目前市面上常見的23種設(shè)計(jì)模式進(jìn)行逐一分析和總結(jié),希望有興趣的小伙伴們可以看一下,會(huì)持續(xù)更新的。希望各位可以監(jiān)督我,我們一起學(xué)習(xí)進(jìn)步,加油,各位。 組合模式是一種結(jié)構(gòu)型設(shè)計(jì)模式,它允許將對(duì)象組合成樹狀結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu)。組

    2024年02月07日
    瀏覽(16)
  • 研磨設(shè)計(jì)模式day12命令模式

    研磨設(shè)計(jì)模式day12命令模式

    目錄 定義 幾個(gè)參數(shù) 場景描述 代碼示例 參數(shù)化設(shè)置 命令模式的優(yōu)點(diǎn) 本質(zhì)? 何時(shí)選用 定義 幾個(gè)參數(shù) Command:定義命令的接口。 ConcreteCommand:命令接口的實(shí)現(xiàn)對(duì)象。但不是真正實(shí)現(xiàn),是通過接收者的功能來完成命令要執(zhí)行的操作 Receiver:接收者。真正執(zhí)行命令的對(duì)象。任何類都

    2024年02月11日
    瀏覽(18)
  • 笨蛋學(xué)設(shè)計(jì)模式結(jié)構(gòu)型模式-組合模式【12】

    7.6.1概念 ? 組合模式通過將對(duì)象組合成樹狀結(jié)構(gòu)來表示 部分-整體 的層次關(guān)系,從而讓客戶端能夠以同樣的方式處理單個(gè)對(duì)象和對(duì)象組合,在使用中將他們視為同一類型的對(duì)象。 7.6.2場景 ? 在文件系統(tǒng)中,比如目錄和文件就形成了一個(gè)樹形結(jié)構(gòu),目錄可以包含文件以及子目

    2024年01月18日
    瀏覽(38)
  • 12.python設(shè)計(jì)模式【觀察者模式】

    內(nèi)容:定義對(duì)象間的一種一對(duì)多的依賴關(guān)系,當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生改變的時(shí)候,所有依賴于它的對(duì)象得到通知并被自動(dòng)更新。觀者者模式又稱為“發(fā)布-訂閱”模式。比如天氣預(yù)報(bào),氣象局分發(fā)氣象數(shù)據(jù)。 角色: 抽象主題(Subject) 具體主題(ConcreteSubject)——發(fā)布者 抽象

    2024年02月15日
    瀏覽(27)
  • Java 與設(shè)計(jì)模式(12):享元模式

    享元模式是一種結(jié)構(gòu)型設(shè)計(jì)模式,旨在有效地共享對(duì)象以減少內(nèi)存使用和提高性能。該模式的核心思想是通過共享盡可能多的相似對(duì)象來減少內(nèi)存占用。它將對(duì)象分為可共享的內(nèi)部狀態(tài)和不可共享的外部狀態(tài)。內(nèi)部狀態(tài)是對(duì)象的固有屬性,可以在多個(gè)對(duì)象之間共享,而外部狀

    2024年02月12日
    瀏覽(25)
  • 12,【設(shè)計(jì)模式】工廠

    在C++中,“工廠”(Factory)是一種設(shè)計(jì)模式,它提供了一種創(chuàng)建對(duì)象的方式,將對(duì)象的創(chuàng)建和使用代碼分離開來,提高了代碼的可擴(kuò)展性和可維護(hù)性。 工廠模式通過一個(gè)共同的接口或基類來定義產(chǎn)品對(duì)象的創(chuàng)建方法,而具體的對(duì)象創(chuàng)建過程則由子類或具體工廠來實(shí)現(xiàn)。通過

    2024年02月11日
    瀏覽(11)
  • AI Chat 設(shè)計(jì)模式:12. 享元模式

    AI Chat 設(shè)計(jì)模式:12. 享元模式

    本文是該系列的第十二篇,采用問答式的方式展開,問題由我提出,答案由 Chat AI 作出,灰色背景的文字則主要是我的一些思考和補(bǔ)充。 享元模式是一種軟件設(shè)計(jì)模式,用于 提高系統(tǒng)的性能和內(nèi)存利用率 。該模式 通過共享對(duì)象來減少內(nèi)存消耗 ,特別是在大量對(duì)象需要同時(shí)

    2024年02月14日
    瀏覽(19)
  • 讀發(fā)布!設(shè)計(jì)與部署穩(wěn)定的分布式系統(tǒng)(第2版)筆記12_超時(shí)模式

    讀發(fā)布!設(shè)計(jì)與部署穩(wěn)定的分布式系統(tǒng)(第2版)筆記12_超時(shí)模式

    2.4.2.1.?電纜可能會(huì)斷開 2.4.2.2.?傳輸線路上的交換機(jī)或路由器可能會(huì)壞掉 2.4.2.3.?正在尋址的計(jì)算機(jī)可能會(huì)崩潰 3.2.3.1.?這些庫通常代表系統(tǒng)直接進(jìn)行套接字調(diào)用 4.5.4.1.?快速重試很有可能再次失敗 4.7.1.1.?失敗了 4.7.1.2.?成功了 4.7.1.3.?其他提示信息

    2024年02月11日
    瀏覽(22)
  • 小談靜態(tài)類和單例模式

    靜態(tài)類(Static Class)和單例(Singleton)都是在編程中用于實(shí)現(xiàn)特定類型的設(shè)計(jì)模式或代碼組織方式。它們?cè)诓煌那榫诚掠胁煌挠猛竞吞攸c(diǎn)。 靜態(tài)類(Static Class) 靜態(tài)類是一種類,它的方法和屬性都是靜態(tài)的,意味著它們可以在不創(chuàng)建類實(shí)例的情況下直接訪問。靜態(tài)類常

    2024年02月09日
    瀏覽(15)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包