设计模式之中介者模式

定义

中介者模式是一种行为设计模式,它减少了类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理所有的通信,并支持易维护的方式来协调多个类。

示例代码

以下是一个简单的Java代码示例,演示了中介者模式的使用:

首先,我们定义一个中介者接口:

java 复制代码
public interface Mediator {
    void sendMessage(String message, Colleague colleague);
}

然后,我们创建实现中介者接口的具体中介者类:

java 复制代码
import java.util.ArrayList;
import java.util.List;

public class ConcreteMediator implements Mediator {
    private List<Colleague> colleagues;

    public ConcreteMediator() {
        this.colleagues = new ArrayList<>();
    }

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

    @Override
    public void sendMessage(String message, Colleague originator) {
        for (Colleague colleague : colleagues) {
            //don't tell ourselves
            if (colleague != originator) {
                colleague.receive(message);
            }
        }
    }
}

接着,我们定义一个同事类:

java 复制代码
public abstract class Colleague {
    protected Mediator mediator;

    public Colleague(Mediator m) {
        mediator = m;
    }

    //send a message via the mediator
    public void send(String message) {
        mediator.sendMessage(message, this);
    }
    //get access to the mediator
    public Mediator getMediator() {return mediator;}

    public abstract void receive(String message);
}

然后,我们创建实现同事抽象类的具体同事类:

java 复制代码
public class ConcreteColleague extends Colleague {

    public ConcreteColleague(Mediator m) {
        super(m);
    }

    public void receive(String message) {
        System.out.println("Colleague Received: " + message);
    }
}

最后,我们可以在客户端代码中使用这些类:

java 复制代码
public class MediatorPatternDemo {
    public static void main(String[] args) {
        ConcreteMediator mediator = new ConcreteMediator();

        ConcreteColleague colleague1 = new ConcreteColleague(mediator);
        ConcreteColleague colleague2 = new ConcreteColleague(mediator);

        mediator.addColleague(colleague1);
        mediator.addColleague(colleague2);

        colleague1.send("Hello, from colleague1!");
        colleague2.send("Hello, from colleague2!");
    }
}

在这个例子中,MediatorPatternDemo类使用ConcreteMediator类和ConcreteColleague类来创建一个中介者模式的示例。

相关推荐
AI人工智能+电脑小能手10 小时前
大白话说Java设计模式-34-命令模式(业务实战篇)
java·spring·设计模式·命令模式·异步任务·撤销重做·事务封装
用户2022522150612 小时前
字节发布"豆包工作",我从AI PM角度看到的不是功能,是上下文
设计模式
AI人工智能+电脑小能手13 小时前
大白话说Java设计模式-37-中介者模式(源码剖析篇)
java·设计模式·线程池·中介者模式·源码分析·executor·applicationeventmulticaster
电子科技圈15 小时前
IAR与东软睿驰达成战略合作,强化软件开发效率与生态协作
设计模式·开源·软件工程·软件构建·代码规范·设计规范·代码复审
吴声子夜歌16 小时前
Java面试——设计模式(四)
java·设计模式·面试
吴声子夜歌1 天前
Java面试——设计模式(一)
java·设计模式·面试
吴声子夜歌2 天前
Java面试——设计模式(二)
java·设计模式·面试
Larcher2 天前
SDD 项目开发步骤与提示词
人工智能·设计模式·架构
阿无,2 天前
设计模式之责任链模式
设计模式·责任链模式
云深处@3 天前
【C++设计模式】命令模式
c++·设计模式·命令模式