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

設(shè)計(jì)模式之中介者模式

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

詳細(xì)介紹

????????中介者模式(Mediator Pattern)是一種行為設(shè)計(jì)模式,它通過定義一個(gè)中介類來封裝多個(gè)對(duì)象之間的交互,使各對(duì)象不需要顯示地相互引用,從而降低耦合度,提高系統(tǒng)的可維護(hù)性和靈活性。中介者模式將原本一對(duì)多的網(wǎng)狀關(guān)系轉(zhuǎn)變?yōu)橐粚?duì)多的關(guān)系,即每個(gè)對(duì)象只與中介者對(duì)象通信,而中介者負(fù)責(zé)將消息轉(zhuǎn)發(fā)給正確的對(duì)象,從而實(shí)現(xiàn)對(duì)象之間的解耦。?

核心組件:

  • Mediator(中介者):定義一個(gè)接口,用于聲明所有同事對(duì)象需要調(diào)用的中介方法。
  • ConcreteMediator(具體中介者):具體實(shí)現(xiàn)中介者接口,協(xié)調(diào)各個(gè)同事對(duì)象的交互,維持同事對(duì)象間的松耦合關(guān)系。
  • Colleague(同事):定義一個(gè)接口,聲明同事對(duì)象所知道的中介者。每個(gè)同事只知道中介者而不知道其他同事的存在。
  • ConcreteColleague(具體同事):實(shí)現(xiàn)同事接口,實(shí)現(xiàn)自身業(yè)務(wù)邏輯,并通過中介者與其他同事通信。

使用場(chǎng)景

  1. 多個(gè)對(duì)象間存在復(fù)雜的相互依賴關(guān)系:當(dāng)多個(gè)對(duì)象之間的直接交互復(fù)雜且難以管理時(shí),可以使用中介者模式來簡(jiǎn)化對(duì)象間的通信。
  2. 需要降低對(duì)象間的耦合度:通過引入中介者,可以避免對(duì)象間的直接引用,從而降低系統(tǒng)的耦合度。
  3. 需要集中控制交互:當(dāng)需要對(duì)一組對(duì)象的交互進(jìn)行集中管理時(shí),中介者模式可以提供一個(gè)中心控制點(diǎn)。

注意事項(xiàng)

  1. 中介者不應(yīng)知道所有同事的詳細(xì)信息:中介者應(yīng)該只了解它需要協(xié)調(diào)的交互細(xì)節(jié),而不必知道同事的具體實(shí)現(xiàn)。
  2. 避免過度集中:過度集中所有的交互到一個(gè)中介者可能會(huì)導(dǎo)致中介者本身變得過于復(fù)雜,考慮使用多個(gè)中介者來分解復(fù)雜性。
  3. 性能考量:中介者作為消息的中轉(zhuǎn)站,頻繁的調(diào)用可能會(huì)成為性能瓶頸,需注意優(yōu)化。

優(yōu)缺點(diǎn)

優(yōu)點(diǎn):

  • 降低耦合度:同事之間不直接通信,減少了相互依賴。
  • 簡(jiǎn)化對(duì)象間通信:通過中介者統(tǒng)一管理交互,簡(jiǎn)化了系統(tǒng)結(jié)構(gòu)。
  • 易于維護(hù)和擴(kuò)展:新增或修改同事類時(shí),只需修改中介者即可,不影響其他同事。

缺點(diǎn):

  • 中介者可能會(huì)變得復(fù)雜:隨著系統(tǒng)復(fù)雜度增加,中介者可能需要處理越來越多的交互邏輯。
  • 不適用簡(jiǎn)單場(chǎng)景:對(duì)于簡(jiǎn)單的對(duì)象交互,引入中介者可能會(huì)造成不必要的復(fù)雜度。

Java代碼示例

假設(shè)有一個(gè)聊天室系統(tǒng),包含用戶(User)和聊天室(ChatRoom)兩種角色。

// 同事接口
interface Colleague {
    void receiveMessage(String message, Colleague sender);
    void sendMessage(String message);
}

// 具體同事:用戶
class User implements Colleague {
    private String name;
    private ChatRoom chatRoom;

    public User(String name, ChatRoom chatRoom) {
        this.name = name;
        this.chatRoom = chatRoom;
    }

    @Override
    public void receiveMessage(String message, Colleague sender) {
        System.out.println(name + " received message from " + ((User)sender).getName() + ": " + message);
    }

    @Override
    public void sendMessage(String message) {
        chatRoom.sendMessage(this, message);
    }

    public String getName() {
        return name;
    }
}

// 中介者:聊天室
class ChatRoom implements Mediator {
    @Override
    public void sendMessage(Colleague sender, String message) {
        for (Colleague colleague : users) {
            if (!colleague.equals(sender)) {
                colleague.receiveMessage(message, sender);
            }
        }
    }

    private List<Colleague> users = new ArrayList<>();

    public void addUser(User user) {
        users.add(user);
    }
}

// 使用示例
public class MediatorPatternDemo {
    public static void main(String[] args) {
        ChatRoom chatRoom = new ChatRoom();
        User john = new User("John", chatRoom);
        User jane = new User("Jane", chatRoom);
        
        chatRoom.addUser(john);
        chatRoom.addUser(jane);
        
        john.sendMessage("Hello, Jane!");
        jane.sendMessage("Hi, John! How are you?");
    }
}

使用過程中可能遇到的問題

  1. 中介者過于龐大:當(dāng)中介者變得龐大和復(fù)雜時(shí),可以考慮分解為多個(gè)小的中介者,或者引入更多的抽象層次。
  2. 過度集中控制:為了減少中介者負(fù)擔(dān),可以適當(dāng)讓一些簡(jiǎn)單的交互直接在同事間發(fā)生,僅將復(fù)雜的交互邏輯委托給中介者處理。

與其他模式的對(duì)比

  • 與觀察者模式:兩者都涉及對(duì)象間的通信,但觀察者模式強(qiáng)調(diào)一對(duì)多的發(fā)布-訂閱機(jī)制,而中介者模式更側(cè)重于簡(jiǎn)化對(duì)象間的直接通信,控制復(fù)雜交互。
  • 與外觀模式:外觀模式為子系統(tǒng)提供一個(gè)統(tǒng)一的接口,隱藏子系統(tǒng)的復(fù)雜性;而中介者模式關(guān)注于協(xié)調(diào)一組對(duì)象之間的交互,降低它們之間的耦合度。
  • 與策略模式:策略模式關(guān)注于定義一系列算法,并在運(yùn)行時(shí)選擇其中一個(gè)算法執(zhí)行。雖然兩者都實(shí)現(xiàn)了行為的封裝,但中介者模式更側(cè)重于管理對(duì)象間的交互,而不是算法的替換。

設(shè)計(jì)模式之中介者模式,編程語言,設(shè)計(jì)模式,Java基礎(chǔ),設(shè)計(jì)模式,中介者模式,java,后端,編程文章來源地址http://www.zghlxwxcb.cn/news/detail-861802.html

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

本文來自互聯(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)文章

  • 大話設(shè)計(jì)模式之中介者模式

    大話設(shè)計(jì)模式之中介者模式

    中介者模式是一種行為型設(shè)計(jì)模式,它通過引入一個(gè)中介者對(duì)象來封裝一系列對(duì)象之間的交互,從而減少對(duì)象之間的直接通信,使得對(duì)象之間的耦合度降低,同時(shí)提高了系統(tǒng)的可維護(hù)性和靈活性。 在中介者模式中,對(duì)象之間的通信不再直接發(fā)生,而是通過中介者對(duì)象來進(jìn)行。

    2024年04月16日
    瀏覽(24)
  • Java設(shè)計(jì)模式-中介者模式

    中介者模式,就是用一個(gè)中介對(duì)象來封裝一系列的對(duì)象交互。中介者使各對(duì)象不需要顯式地互相引用,從而使其耦合松散,而且可以獨(dú)立的改變它們之間的交互。 其實(shí)中介者模式很簡(jiǎn)單的,就像它的名字一樣,中介,調(diào)用某個(gè)類的某些方法的時(shí)候,我們不直接去跟那個(gè)類的實(shí)

    2024年02月15日
    瀏覽(22)
  • 行為型設(shè)計(jì)模式——中介者模式

    行為型設(shè)計(jì)模式——中介者模式

    中介者模式主要是將關(guān)聯(lián)關(guān)系由一個(gè)中介者類統(tǒng)一管理維護(hù),一般來說,同事類之間的關(guān)系是比較復(fù)雜的,多個(gè)同事類之間互相關(guān)聯(lián)時(shí),他們之間的關(guān)系會(huì)呈現(xiàn)為復(fù)雜的網(wǎng)狀結(jié)構(gòu),這是一種過度耦合的架構(gòu),即不利于類的復(fù)用,也不穩(wěn)定。例如在下左圖中,有六個(gè)同事類對(duì)象

    2024年01月18日
    瀏覽(23)
  • 設(shè)計(jì)模式- 中介者模式(Mediator)

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

    中介者模式(Mediator Pattern),是一種對(duì)象行為型模式。該模式的主要目的是定義一個(gè)中介對(duì)象來封裝一系列對(duì)象之間的交互,使原有對(duì)象之間的耦合變得松散,并且可以獨(dú)立地改變它們之間的交互。 抽象中介者(Mediator) :這是中介者模式的核心接口,它定義了同事對(duì)象注

    2024年04月26日
    瀏覽(26)
  • C++ 設(shè)計(jì)模式之 中介者模式

    C++ 設(shè)計(jì)模式之 中介者模式

    【聲明】本題目來源于卡碼網(wǎng)(題目頁面 (kamacoder.com)) 【提示:如果不想看文字介紹,可以直接跳轉(zhuǎn)到C++編碼部分】 ? ? ? ? -- 什么是中介者模式? (第16種模式) ??????? ?中介者模式 (Mediator Pattern)也被稱為 調(diào)停者模式 ,是?種 ?為型設(shè)計(jì)模式 ,它通過?個(gè)中介

    2024年01月19日
    瀏覽(21)
  • 經(jīng)典的設(shè)計(jì)模式17——中介者模式

    定義: 用一個(gè)中介對(duì)象來封裝一系列的對(duì)象交互。中介者使各對(duì)象不需要顯示地相互引用,從而使其耦合松散,而且可以獨(dú)立地改變他們之間的交互。 結(jié)構(gòu): 抽象中介者角色:是中介者的接口,提供了同事對(duì)象注冊(cè)與轉(zhuǎn)發(fā)同事對(duì)象信息的抽象方法。 具體中介者角色:實(shí)現(xiàn)中

    2024年02月09日
    瀏覽(23)
  • 《設(shè)計(jì)模式的藝術(shù)》筆記 - 中介者模式

    ? ? ? ? 中介者模式用一個(gè)中介對(duì)象來封裝一系列的對(duì)象交互。中介者使各對(duì)象不需要顯示地相互引用,從而使其耦合松散,而且可以獨(dú)立地改變它們之間的交互。中介者模式又稱為調(diào)停者模式,它是一種對(duì)象行為模式。 myclass.h myclass.cpp main.cpp ? ? ? ? 1.?中介者模式簡(jiǎn)化了

    2024年01月24日
    瀏覽(21)
  • 設(shè)計(jì)模式—行為型模式之中介者模式

    設(shè)計(jì)模式—行為型模式之中介者模式

    中介者模式(Mediator Pattern):用一個(gè)中介對(duì)象來封裝一系列的對(duì)象交互,中介者使各對(duì)象不需要顯式地相互引用,減少對(duì)象間混亂的依賴關(guān)系,從而使其耦合松散,而且可以獨(dú)立地改變它們之間的交互。對(duì)象行為型模式。 包含以下角色: Mediator: 抽象中介者 ConcreteMediator: 具體中

    2024年01月16日
    瀏覽(18)
  • 設(shè)計(jì)模式-行為型模式之中介者模式

    設(shè)計(jì)模式-行為型模式之中介者模式

    在用戶與用戶直接聊天的設(shè)計(jì)方案中,用戶對(duì)象之間存在很強(qiáng)的 關(guān)聯(lián)性 ,將導(dǎo)致系統(tǒng)出現(xiàn)如下問題: 對(duì)象之間存在大量的相互關(guān)聯(lián)和調(diào)用,若有一個(gè)對(duì)象發(fā)生變化,則需要跟蹤和該對(duì)象關(guān)聯(lián)的其他所有對(duì)象,并進(jìn)行適當(dāng)處理。 由于一個(gè)對(duì)象和其他對(duì)象具有很強(qiáng)的關(guān)聯(lián),若沒

    2023年04月23日
    瀏覽(24)
  • Java中介者設(shè)計(jì)模式

    中介者模式(Mediator Pattern)是一種行為設(shè)計(jì)模式,它通過封裝一系列對(duì)象之間的交互,將對(duì)象之間的通信集中處理,從而降低對(duì)象之間的耦合度。 在中介者模式中,一個(gè)中介者對(duì)象封裝了一系列對(duì)象之間的交互關(guān)系。中介者使各個(gè)對(duì)象不需要顯式地相互引用,從而使其耦合

    2024年02月16日
    瀏覽(28)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包