温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

泛型Java类中的泛型类型参数化中介者模式

发布时间:2024-10-24 18:06:49 来源:亿速云 阅读:78 作者:小樊 栏目:编程语言

中介者模式(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,它包含一个指向中介者的引用。最后,我们创建了两个具体同事类ConcreteColleagueAConcreteColleagueB,它们都继承了Colleague类,并实现了与中介者交互的方法。

在测试类MediatorPatternDemo中,我们创建了一个中介者实例和一个同事类实例,并演示了同事类之间如何通过中介者发送消息。这种方式可以减少类之间的直接依赖,提高代码的可维护性和可扩展性。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI