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

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

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

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

原理

  • 抽象中介者(Mediator Interface): 定義了各個同事類(Colleague)與中介者之間進行交互的接口。
  • 具體中介者(Concrete Mediator): 實現(xiàn)了抽象中介者的接口,并持有對所有同事類的引用,負責協(xié)調(diào)它們之間的交互邏輯。
  • 同事類(Colleague Classes): 每個同事類都知道中介者并與其通信,但不知道其他同事類的具體細節(jié)。

Java代碼示例

// 抽象中介者接口
public interface ChatMediator {
    void sendMessage(User user, String message);
    void addUser(User user);
    void removeUser(User user);
}

// 具體中介者 - 聊天室實現(xiàn)
public class ChatRoom implements ChatMediator {
    private List<User> users;

    public ChatRoom() {
        this.users = new ArrayList<>();
    }

    @Override
    public void sendMessage(User user, String message) {
        for (User colleague : users) {
            if (!colleague.equals(user)) {
                colleague.receiveMessage(user.getName(), message);
            }
        }
    }

    @Override
    public void addUser(User user) {
        users.add(user);
        System.out.println(user.getName() + "加入了聊天室");
    }

    @Override
    public void removeUser(User user) {
        users.remove(user);
        System.out.println(user.getName() + "離開了聊天室");
    }
}

// 同事類 - 用戶
public class User {
    private String name;
    private ChatMediator mediator;

    public User(String name, ChatMediator mediator) {
        this.name = name;
        this.mediator = mediator;
        mediator.addUser(this);
    }

    public void sendMessage(String message) {
        mediator.sendMessage(this, message);
    }

    public void receiveMessage(String from, String message) {
        System.out.println("[" + from + "] -> [" + this.name + "]: " + message);
    }

    public String getName() {
        return name;
    }
}

// 使用示例
public class Client {
    public static void main(String[] args) {
        ChatMediator chatRoom = new ChatRoom();
        User alice = new User("Alice", chatRoom);
        User bob = new User("Bob", chatRoom);

        alice.sendMessage("你好,Bob!");
        bob.sendMessage("你好,Alice!");
    }
}

想象一下你在一個朋友聚會上,大家想要交流卻不能大聲喊叫以免打擾到其他人。這時主持人(中介者)就起到了關(guān)鍵作用,他接收每個人的話并傳遞給其他人。在這個場景中,參與者(同事類)只需告訴主持人他們的信息,無需直接與其他所有人交談,這樣簡化了溝通流程且降低了混亂程度。文章來源地址http://www.zghlxwxcb.cn/news/detail-802506.html

應(yīng)用場景

  • 聊天系統(tǒng):每個用戶是一個同事類,聊天室是中介者,用戶之間通過聊天室發(fā)送消息,而不需要知道對方用戶的詳細信息。
  • 用戶界面組件:按鈕、文本框等組件都是同事類,事件管理器作為中介者處理不同組件間的事件觸發(fā)和響應(yīng)。

適用性

  • 多個對象之間存在復(fù)雜交互關(guān)系,形成了“網(wǎng)狀”依賴結(jié)構(gòu)。
  • 當需要改變或擴展對象間交互時,不想修改大量已有的對象類。
  • 需要集中控制和協(xié)調(diào)對象之間的交互行為。

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

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

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

相關(guān)文章

  • 【設(shè)計模式——學習筆記】23種設(shè)計模式——中介者模式Observer(原理講解+應(yīng)用場景介紹+案例介紹+Java代碼實現(xiàn))

    【設(shè)計模式——學習筆記】23種設(shè)計模式——中介者模式Observer(原理講解+應(yīng)用場景介紹+案例介紹+Java代碼實現(xiàn))

    普通實現(xiàn) 在租房過程中,客戶可能去找房東問房子是否可以租,但是房東可能要和家人進行一系列的溝通,最后還可能派出另一個家庭成員來和客戶進行交流,整個溝通過程非常復(fù)雜、溝通線路繁多。如果是寫成程序的模式,不同成員之間需要留好接口方便成員之間互相進行

    2024年02月14日
    瀏覽(22)
  • 設(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è)計模式-中介者模式

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

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

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

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

    2024年01月22日
    瀏覽(28)
  • 設(shè)計模式之中介者模式

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

    詳細介紹 ????????中介者模式(Mediator Pattern)是一種行為設(shè)計模式, 它通過定義一個中介類來封裝多個對象之間的交互,使各對象不需要顯示地相互引用,從而降低耦合度,提高系統(tǒng)的可維護性和靈活性。中介者模式將原本一對多的網(wǎng)狀關(guān)系轉(zhuǎn)變?yōu)橐粚Χ嗟年P(guān)系,即每個

    2024年04月29日
    瀏覽(46)
  • 設(shè)計模式(十七)中介者

    設(shè)計模式(十七)中介者

    義一個對象來封裝一系列的對象交互。中介者模式使各對象不需要顯示地相互引用,從而使其耦合松散,而且可以讓你相對獨立地改變它們之間的交互。中介者模式又稱為調(diào)停模式,它是一種對象說行為型模式。 在中介者模式中,引入了用于協(xié)調(diào)其他對象/類之間的相互調(diào)用

    2024年02月04日
    瀏覽(21)
  • 大話設(shè)計模式之中介者模式

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

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

    2024年04月16日
    瀏覽(24)
  • 行為型設(shè)計模式——中介者模式

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

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

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

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

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

    2024年04月26日
    瀏覽(26)
  • 【中介者設(shè)計模式詳解】C/Java/JS/Go/Python/TS不同語言實現(xiàn)

    【中介者設(shè)計模式詳解】C/Java/JS/Go/Python/TS不同語言實現(xiàn)

    中介者模式(Mediator Pattern)是一種行為型模式。它限制對象之間的直接交互,它用一個中介對象來封裝一系列的動作,以讓對象之間進行交流。中介者使各個對象不需要顯式地相互引用,從而使其耦合松散,而且可以獨立地改變它們之間的交互。 當一些對象和其他對象緊密

    2023年04月19日
    瀏覽(28)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包