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

軟件設(shè)計模式系列之十九——中介者模式

這篇具有很好參考價值的文章主要介紹了軟件設(shè)計模式系列之十九——中介者模式。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

@

目錄
  • 1 模式的定義
  • 2 舉例說明
  • 3 結(jié)構(gòu)
  • 4 實現(xiàn)步驟
  • 5 代碼實現(xiàn)
  • 6 典型應(yīng)用場景
  • 7 優(yōu)缺點
  • 8 類似模式
  • 9 小結(jié)

1 模式的定義

中介者模式是一種行為型設(shè)計模式,它用于降低對象之間的直接通信,通過引入一個中介者對象來管理對象之間的交互。這種模式有助于減少對象之間的耦合性,使系統(tǒng)更加可維護和擴展。中介者模式是Gang of Four(GoF)設(shè)計模式中的一員,旨在促進對象之間的松耦合關(guān)系,從而提高系統(tǒng)的靈活性。

2 舉例說明

為了更好地理解中介者模式,讓我們考慮一個簡單的例子:一個多人在線聊天室應(yīng)用程序。在這個應(yīng)用程序中,有多個用戶可以發(fā)送消息給其他用戶,而不需要直接知道接收消息的用戶是誰。中介者模式可以用來管理用戶之間的消息傳遞。
軟件設(shè)計模式系列之十九——中介者模式

在這個例子中,中介者充當聊天室的中心,所有用戶都將消息發(fā)送到中介者,然后中介者負責(zé)將消息傳遞給適當?shù)慕邮照摺_@樣,用戶之間不需要直接通信,而是通過中介者進行通信,從而降低了用戶之間的耦合性。

3 結(jié)構(gòu)

中介者模式的結(jié)構(gòu)包括以下幾個關(guān)鍵元素:
軟件設(shè)計模式系列之十九——中介者模式

抽象中介者(Mediator):這是中介者模式的核心接口,它定義了中介者對象應(yīng)該具備的方法,通常包括注冊組件、發(fā)送消息等操作。

具體中介者(ConcreteMediator):具體中介者是抽象中介者的實現(xiàn),它維護了對所有相關(guān)組件的引用,并負責(zé)協(xié)調(diào)它們之間的通信。

抽象組件(Colleague):抽象組件代表參與中介者模式的各個組件對象,它們通常具有一個指向中介者的引用,并定義了與其他組件對象通信的接口。

具體組件(ConcreteColleague):具體組件是抽象組件的實現(xiàn),它們之間通過中介者來通信,而不是直接相互關(guān)聯(lián)。

4 實現(xiàn)步驟

要實現(xiàn)中介者模式,您可以按照以下步驟進行:

定義抽象中介者接口:創(chuàng)建一個抽象中介者接口,其中包括方法來注冊和發(fā)送消息。

創(chuàng)建具體中介者類:實現(xiàn)抽象中介者接口,管理所有具體組件對象的引用,并協(xié)調(diào)它們之間的通信。

定義抽象組件接口:創(chuàng)建一個抽象組件接口,其中包括方法來注冊中介者和發(fā)送消息。

創(chuàng)建具體組件類:實現(xiàn)抽象組件接口,確保它們能夠通過中介者對象進行通信。

在具體組件中使用中介者:在具體組件中使用中介者來發(fā)送消息,而不是直接與其他組件通信。

客戶端代碼:在客戶端代碼中創(chuàng)建中介者和組件對象,然后將組件對象注冊到中介者中,以便它們可以相互通信。

5 代碼實現(xiàn)

// 1. 定義抽象中介者接口
interface Mediator {
    void register(Colleague colleague);
    void send(String message, Colleague sender);
}

// 2. 創(chuàng)建具體中介者類
class ConcreteMediator implements Mediator {
    private List<Colleague> colleagues = new ArrayList<>();

    @Override
    public void register(Colleague colleague) {
        colleagues.add(colleague);
    }

    @Override
    public void send(String message, Colleague sender) {
        for (Colleague colleague : colleagues) {
            if (colleague != sender) {
                colleague.receive(message);
            }
        }
    }
}

// 3. 定義抽象組件接口
interface Colleague {
    void setMediator(Mediator mediator);
    void send(String message);
    void receive(String message);
}

// 4. 創(chuàng)建具體組件類
class ConcreteColleague implements Colleague {
    private Mediator mediator;
    private String name;

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

    @Override
    public void setMediator(Mediator mediator) {
        this.mediator = mediator;
    }

    @Override
    public void send(String message) {
        mediator.send(message, this);
    }

    @Override
    public void receive(String message) {
        System.out.println(name + " received: " + message);
    }
}

// 6. 客戶端代碼
public class Client {
    public static void main(String[] args) {
        Mediator mediator = new ConcreteMediator();

        Colleague colleague1 = new ConcreteColleague("User1");
        Colleague colleague2 = new ConcreteColleague("User2");
        Colleague colleague3 = new ConcreteColleague("User3");

        mediator.register(colleague1);
        mediator.register(colleague2);
        mediator.register(colleague3);

        colleague1.setMediator(mediator);
        colleague2.setMediator(mediator);
        colleague3.setMediator(mediator);

        colleague1.send("Hello, everyone!");
        colleague2.send("Hi there!");
    }
}

6 典型應(yīng)用場景

中介者模式適用于以下場景:

多對多對象交互:當多個對象之間需要進行復(fù)雜的相互通信時,中介者模式可以幫助簡化系統(tǒng)結(jié)構(gòu)。

減少耦合性:當對象之間的直接耦合關(guān)系導(dǎo)致系統(tǒng)難以維護和擴展時,中介者模式可以降低對象之間的耦合度。

分布式系統(tǒng):在分布式系統(tǒng)中,各個節(jié)點之間可能需要進行協(xié)同工作,中介者模式可以用于管理節(jié)點之間的通信。

7 優(yōu)缺點

優(yōu)點:

降低耦合性:中介者模式將對象之間的通信集中在一個中介者對象中,降低了對象之間的直接耦合,使系統(tǒng)更加靈活。

易于擴展:通過添加新的具體組件和中介者,可以輕松擴展系統(tǒng),而無需修改現(xiàn)有代碼。

集中控制:中介者模式允許將系統(tǒng)的控制邏輯集中在一個對象中,使系統(tǒng)更易于理解和維護。

缺點:

中介者對象復(fù)雜:隨著系統(tǒng)的增長,中介者對象可能會變得復(fù)雜,包含大量的邏輯。

性能問題:由于中介者負責(zé)協(xié)調(diào)對象之間的通信,可能會導(dǎo)致性能問題,特別是在大規(guī)模系統(tǒng)中。

8 類似模式

與中介者模式類似的模式包括觀察者模式和代理模式。雖然它們在某些方面具有相似性,但它們在用途和實現(xiàn)方式上有一些關(guān)鍵區(qū)別。

觀察者模式(Observer Pattern):

觀察者模式和中介者模式都處理對象之間的通信,但它們關(guān)注的側(cè)重點不同。觀察者模式是一對多的關(guān)系,其中一個主題對象(Subject)維護一組觀察者(Observer),當主題對象的狀態(tài)發(fā)生變化時,通知所有觀察者。觀察者之間通常不直接通信,而是通過主題對象。中介者模式關(guān)注多對多的對象通信,中介者充當對象之間的中心樞紐,協(xié)調(diào)它們的交互。觀察者模式關(guān)注一對多的依賴關(guān)系,其中主題對象維護觀察者列表,但觀察者之間不直接通信,而是通過主題對象。

代理模式(Proxy Pattern):

代理模式和中介者模式都涉及到控制對象之間的訪問和交互。代理充當目標對象的代表,可以控制對目標對象的訪問。中介者模式關(guān)注多個對象之間的通信和協(xié)調(diào),它引入一個中介者對象,使對象之間的關(guān)系更加松散。代理模式關(guān)注對單個對象的訪問控制,代理對象通常封裝了目標對象的功能,但并不協(xié)調(diào)多個對象之間的交互。

雖然這些模式都有助于降低對象之間的耦合性,但它們的關(guān)注點和應(yīng)用場景略有不同。中介者模式用于協(xié)調(diào)多個對象之間的復(fù)雜通信,觀察者模式用于建立一對多的依賴關(guān)系,代理模式用于控制對單個對象的訪問,而發(fā)布-訂閱模式用于發(fā)布和訂閱事件或消息。選擇哪種模式取決于具體的設(shè)計需求和問題背景。

9 小結(jié)

中介者模式是一種有助于管理多個對象之間通信的強大工具。通過引入中介者對象,它能夠降低對象之間的耦合度,使系統(tǒng)更加靈活、易于擴展和維護。在設(shè)計軟件系統(tǒng)時,考慮使用中介者模式來促進對象之間的松耦合關(guān)系,提高系統(tǒng)的可維護性和可擴展性。文章來源地址http://www.zghlxwxcb.cn/news/detail-710242.html

到了這里,關(guān)于軟件設(shè)計模式系列之十九——中介者模式的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 軟件設(shè)計模式系列之十二——外觀模式

    軟件設(shè)計模式系列之十二——外觀模式

    在軟件設(shè)計中,經(jīng)常會遇到需要與復(fù)雜子系統(tǒng)進行交互的情況。為了簡化客戶端與子系統(tǒng)之間的交互,提高系統(tǒng)的可維護性和可用性,外觀模式應(yīng)運而生。外觀模式(Facade Pattern)是一種結(jié)構(gòu)型設(shè)計模式,它提供一個統(tǒng)一的界面,用于訪問系統(tǒng)中的一組相關(guān)接口,從而隱藏了

    2024年02月08日
    瀏覽(23)
  • 軟件設(shè)計模式系列之十八——迭代器模式

    軟件設(shè)計模式系列之十八——迭代器模式

    迭代器模式是一種行為型設(shè)計模式,它允許客戶端逐個訪問一個聚合對象中的元素,而不暴露該對象的內(nèi)部表示。迭代器模式提供了一種統(tǒng)一的方式來遍歷不同類型的集合,使客戶端代碼更加簡潔和可復(fù)用。 為了更好地理解迭代器模式,讓我們考慮一個簡單的例子:一個圖書

    2024年02月08日
    瀏覽(24)
  • 軟件設(shè)計模式系列之十三——享元模式

    軟件設(shè)計模式系列之十三——享元模式

    享元模式(Flyweight Pattern)是一種結(jié)構(gòu)型設(shè)計模式,它旨在減少內(nèi)存占用或計算開銷,通過共享大量細粒度對象來提高系統(tǒng)的性能。這種模式適用于存在大量相似對象實例,但它們的狀態(tài)可以外部化(extrinsic),并且可以在多個對象之間共享的情況。 為了更好地理解享元模式

    2024年02月08日
    瀏覽(25)
  • 軟件設(shè)計模式系列之十五——職責(zé)鏈模式

    軟件設(shè)計模式系列之十五——職責(zé)鏈模式

    職責(zé)鏈模式(Chain of Responsibility Pattern)也稱為責(zé)任鏈模式,是一種結(jié)構(gòu)型設(shè)計模式,用于構(gòu)建一條對象處理請求的責(zé)任鏈。在這個模式中,多個對象依次處理請求,直到其中一個對象能夠處理該請求為止。職責(zé)鏈模式將請求的發(fā)送者和接收者解耦,允許多個對象都有機會處理

    2024年02月08日
    瀏覽(24)
  • 軟件設(shè)計模式系列之十七——解釋器模式

    軟件設(shè)計模式系列之十七——解釋器模式

    解釋器模式是一種行為型設(shè)計模式,它用于將一種語言或表達式解釋為對象。該模式通過定義語言的文法規(guī)則,并使用解釋器來解釋和執(zhí)行這些規(guī)則,將復(fù)雜的語言轉(zhuǎn)換為對象的操作。 在軟件開發(fā)中,解釋器模式常用于處理類似于編程語言、查詢語言、正則表達式等需要解釋

    2024年02月08日
    瀏覽(25)
  • 軟件設(shè)計模式與體系結(jié)構(gòu)-設(shè)計模式-行為型軟件設(shè)計模式-中介者模式

    軟件設(shè)計模式與體系結(jié)構(gòu)-設(shè)計模式-行為型軟件設(shè)計模式-中介者模式

    模式動機: 為了減少對象兩之間復(fù)雜的引用關(guān)系,使之成為一個松耦合的系統(tǒng),需要適用中介者模式 定義: 用一個中介對象來封裝一系列的對象交互,中介者使各對象不需要顯式地相互引用,從而使耦合松散,而且可以獨立地該變它們之間的交互 中介者模式又稱為調(diào)停者模

    2024年02月12日
    瀏覽(26)
  • 【中級軟件設(shè)計師】—(針對上午題)二十三種設(shè)計模式(三十九)

    【中級軟件設(shè)計師】—(針對上午題)二十三種設(shè)計模式(三十九)

    簡單工廠模式代碼實現(xiàn)如下: ?? 意圖要背 工廠方法代碼實現(xiàn)如下: 抽象工廠模式代碼如下: 生成器模式代碼如下: 原型模式代碼實現(xiàn)如下: 單例模式代碼如下: 橋接模式代碼實現(xiàn)如下: 組合模式添加和刪除代碼實現(xiàn): 裝飾器模式代碼實現(xiàn): 外觀模式代碼實現(xiàn): 代理模

    2024年02月07日
    瀏覽(36)
  • 設(shè)計模式-中介者模式

    設(shè)計模式-中介者模式

    本文將詳細介紹設(shè)計模式中的中介者模式,其中包括,中介者模式的優(yōu)點、缺點、各組成部分。 中介者模式(Mediator Pattern)是一種設(shè)計模式,它定義了一個中介者類,該類將多個對象之間的通信抽象化,使得這些對象可以通過中介者進行通信,從而降低它們之間的直接耦合

    2024年02月09日
    瀏覽(21)
  • 設(shè)計模式——中介者模式

    中介者模式(Mediator Pattern)是一種行為型設(shè)計模式,它旨在減少多個對象之間的相互引用和耦合度。通過引入一個中介對象來封裝一系列交互行為,使得原本復(fù)雜的網(wǎng)狀關(guān)系結(jié)構(gòu)轉(zhuǎn)變?yōu)樾切谓Y(jié)構(gòu),所有對象與中介者通信而不是彼此直接通信。 抽象中介者(Mediator Interface):

    2024年01月18日
    瀏覽(30)
  • 設(shè)計模式篇---中介者模式

    設(shè)計模式篇---中介者模式

    中介者模式:用一個中介對象來封裝一系列的對象交互。中介者使各對象不需要顯示地相互引用,從而使其耦合松散,而且可以獨立地改變它們之間的交互。 就好比世界各個國家之間可能會產(chǎn)生沖突,但是當產(chǎn)生沖突的時候需要聯(lián)合國來解決沖突。每個國家之間的關(guān)系,就好

    2024年01月22日
    瀏覽(28)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包