溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

中介者模式降低Java類間耦合度

發(fā)布時間:2024-09-29 08:54:28 來源:億速云 閱讀:81 作者:小樊 欄目:編程語言

中介者模式(Mediator Pattern)是一種設(shè)計模式,它通過引入一個中介者類來減少類之間的直接依賴,從而降低耦合度。在Java中,中介者模式可以幫助我們更好地組織和管理對象之間的交互,使得系統(tǒng)更加靈活和易于維護(hù)。

中介者模式的主要組成部分包括:

  1. 中介者(Mediator):定義一個接口,用于協(xié)調(diào)不同組件之間的通信。
  2. 具體中介者(ConcreteMediator):實(shí)現(xiàn)中介者接口,負(fù)責(zé)處理組件之間的交互。
  3. 抽象組件(Colleague):定義一個接口,用于聲明組件之間的交互方法。
  4. 具體組件(ConcreteColleague):實(shí)現(xiàn)抽象組件接口,與具體中介者進(jìn)行交互。

下面是一個簡單的Java示例,展示了如何使用中介者模式降低類之間的耦合度:

// 中介者接口
interface Mediator {
    void sendMessage(String message, Colleague colleague);
}

// 具體中介者
class ConcreteMediator implements Mediator {
    private List<Colleague> colleagues = new ArrayList<>();

    public void registerColleague(Colleague colleague) {
        colleagues.add(colleague);
    }

    @Override
    public void sendMessage(String message, Colleague colleague) {
        for (Colleague c : colleagues) {
            if (c != colleague) {
                c.notify(message);
            }
        }
    }
}

// 抽象組件接口
interface Colleague {
    void notify(String message);
}

// 具體組件
class ConcreteColleagueA implements Colleague {
    private Mediator mediator;

    public ConcreteColleagueA(Mediator mediator) {
        this.mediator = mediator;
        mediator.registerColleague(this);
    }

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

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

class ConcreteColleagueB implements Colleague {
    private Mediator mediator;

    public ConcreteColleagueB(Mediator mediator) {
        this.mediator = mediator;
        mediator.registerColleague(this);
    }

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

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

// 測試類
public class MediatorPatternExample {
    public static void main(String[] args) {
        Mediator mediator = new ConcreteMediator();
        Colleague colleagueA = new ConcreteColleagueA(mediator);
        Colleague colleagueB = new ConcreteColleagueB(mediator);

        colleagueA.sendMessage("Hello", colleagueB);
    }
}

在這個示例中,我們定義了一個中介者接口Mediator,以及兩個具體中介者ConcreteMediator。我們還定義了一個抽象組件接口Colleague,以及兩個具體組件ConcreteColleagueAConcreteColleagueB。具體組件通過中介者進(jìn)行通信,而不是直接相互調(diào)用。這樣,我們就降低了類之間的耦合度,使得系統(tǒng)更加靈活和易于維護(hù)。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI