目 录CONTENT

文章目录

Java设计模式之中介者模式

在等晚風吹
2023-12-28 / 0 评论 / 0 点赞 / 12 阅读 / 0 字 / 正在检测是否收录...

Java设计模式之中介者模式

欢迎来到我的博客!今天,我们将深入研究Java设计模式中的中介者模式,一种用于减少对象之间直接通信,而通过中介者进行协调的行为型设计模式。中介者模式在实际应用中广泛用于处理对象之间的复杂交互逻辑,提高了系统的可维护性和可扩展性。本文将详细介绍中介者模式的概念、使用方法以及适用场景。

1 中介者模式是什么?

中介者模式是一种行为型设计模式,它通过一个中介者对象,使各个对象之间不再直接交互,而是通过中介者进行通信。中介者模式主要用于解耦对象之间的关系,减少对象之间的直接依赖关系,提高系统的灵活性和可维护性。

2 使用方法

中介者模式主要包括以下几个核心角色:中介者(Mediator)、具体中介者(ConcreteMediator)、同事类(Colleague)。

2.1 中介者(Mediator)

public interface Mediator {
    void send(String message, Colleague colleague);
}

2.2 具体中介者(ConcreteMediator)

import java.util.ArrayList;
import java.util.List;

public class ConcreteMediator implements Mediator {
    private List<Colleague> colleagues = new ArrayList<>();

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

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

2.3 同事类(Colleague)

public abstract class Colleague {
    protected Mediator mediator;

    public Colleague(Mediator mediator) {
        this.mediator = mediator;
    }

    public abstract void send(String message);

    public abstract void receive(String message);
}

2.4 具体同事类(ConcreteColleague)

public class ConcreteColleagueA extends Colleague {
    public ConcreteColleagueA(Mediator mediator) {
        super(mediator);
    }

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

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

public class ConcreteColleagueB extends Colleague {
    public ConcreteColleagueB(Mediator mediator) {
        super(mediator);
    }

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

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

2.5 客户端(Client)

public class Client {
    public static void main(String[] args) {
        ConcreteMediator mediator = new ConcreteMediator();

        Colleague colleagueA = new ConcreteColleagueA(mediator);
        Colleague colleagueB = new ConcreteColleagueB(mediator);

        mediator.addColleague(colleagueA);
        mediator.addColleague(colleagueB);

        colleagueA.send("Hello from A");
        colleagueB.send("Hi from B");
    }
}

3 适用场景

中介者模式适用于以下场景:

  • 系统中对象之间存在复杂的交互关系,导致对象之间的依赖关系较为复杂。
  • 一个对象的改变会影响到其他对象,而且这些对象之间的依赖关系是动态的。
  • 需要通过一个中介者来统一协调一系列对象的交互。

4 总结

中介者模式是一种协调对象之间交互的巧妙设计,通过引入中介者对象,将对象之间的直接依赖关系解耦,提高了系统的灵活性和可维护性。希望通过本文的介绍,你对中介者模式有了更深刻的理解。

0

评论区