当前位置: 首页> 教育> 锐评 > 设计模式之中介者模式

设计模式之中介者模式

时间:2025/7/10 1:15:55来源:https://blog.csdn.net/youxiaxiaomage/article/details/139493114 浏览次数:0次

定义

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

示例代码

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

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

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

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

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);}@Overridepublic void sendMessage(String message, Colleague originator) {for (Colleague colleague : colleagues) {//don't tell ourselvesif (colleague != originator) {colleague.receive(message);}}}
}

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

public abstract class Colleague {protected Mediator mediator;public Colleague(Mediator m) {mediator = m;}//send a message via the mediatorpublic void send(String message) {mediator.sendMessage(message, this);}//get access to the mediatorpublic Mediator getMediator() {return mediator;}public abstract void receive(String message);
}

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

public class ConcreteColleague extends Colleague {public ConcreteColleague(Mediator m) {super(m);}public void receive(String message) {System.out.println("Colleague Received: " + message);}
}

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

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类来创建一个中介者模式的示例。

关键字:设计模式之中介者模式

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: