中介者模式(Mediator Pattern)是一种设计模式,用于减少类之间的直接依赖,通过引入一个中介者类来协调它们之间的交互。在泛型Java类中实现泛型类型参数化的中介者模式,可以提高代码的复用性和类型安全。
下面是一个泛型Java类中实现泛型类型参数化中介者模式的示例:
import java.util.HashMap;
import java.util.Map;
// 中介者接口,定义了与中介者交互的方法
interface Mediator<T> {
void sendMessage(T sender, T receiver, String message);
}
// 具体的中介者类,实现了Mediator接口
class ConcreteMediator<T> implements Mediator<T> {
private Map<T, T> communicationMap = new HashMap<>();
@Override
public void sendMessage(T sender, T receiver, String message) {
communicationMap.putIfAbsent(sender, receiver);
communicationMap.putIfAbsent(receiver, sender);
T target = communicationMap.get(sender);
System.out.println(sender + " sends message to " + target + ": " + message);
}
}
// 抽象同事类,定义了与中介者交互的方法
abstract class Colleague<T> {
protected Mediator<T> mediator;
public Colleague(Mediator<T> mediator) {
this.mediator = mediator;
}
public abstract void sendMessage(T receiver, String message);
}
// 具体同事类A
class ConcreteColleagueA<T> extends Colleague<T> {
public ConcreteColleagueA(Mediator<T> mediator) {
super(mediator);
}
@Override
public void sendMessage(T receiver, String message) {
mediator.sendMessage(this, receiver, message);
}
}
// 具体同事类B
class ConcreteColleagueB<T> extends Colleague<T> {
public ConcreteColleagueB(Mediator<T> mediator) {
super(mediator);
}
@Override
public void sendMessage(T receiver, String message) {
mediator.sendMessage(this, receiver, message);
}
}
// 测试类
public class MediatorPatternDemo {
public static void main(String[] args) {
// 创建中介者实例
Mediator<String> mediator = new ConcreteMediator<>();
// 创建同事类实例
ConcreteColleagueA<String> colleagueA = new ConcreteColleagueA<>(mediator);
ConcreteColleagueB<String> colleagueB = new ConcreteColleagueB<>(mediator);
// 同事类之间发送消息
colleagueA.sendMessage(colleagueB, "Hello from A");
colleagueB.sendMessage(colleagueA, "Hello from B");
}
}
在上述示例中,我们定义了一个泛型接口Mediator
,它表示中介者。然后,我们创建了一个具体的中介者类ConcreteMediator
,它实现了Mediator
接口。接下来,我们定义了一个抽象同事类Colleague
,它包含一个指向中介者的引用。最后,我们创建了两个具体同事类ConcreteColleagueA
和ConcreteColleagueB
,它们都继承了Colleague
类,并实现了与中介者交互的方法。
在测试类MediatorPatternDemo
中,我们创建了一个中介者实例和一个同事类实例,并演示了同事类之间如何通过中介者发送消息。这种方式可以减少类之间的直接依赖,提高代码的可维护性和可扩展性。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。