温馨提示×

温馨提示×

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

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

中介者模式降低Java类间耦合度

发布时间:2024-09-29 08:54:28 来源:亿速云 阅读:86 作者:小樊 栏目:编程语言

中介者模式(Mediator Pattern)是一种设计模式,它通过引入一个中介者类来减少类之间的直接依赖,从而降低耦合度。在Java中,中介者模式可以帮助我们更好地组织和管理对象之间的交互,使得系统更加灵活和易于维护。

中介者模式的主要组成部分包括:

  1. 中介者(Mediator):定义一个接口,用于协调不同组件之间的通信。
  2. 具体中介者(ConcreteMediator):实现中介者接口,负责处理组件之间的交互。
  3. 抽象组件(Colleague):定义一个接口,用于声明组件之间的交互方法。
  4. 具体组件(ConcreteColleague):实现抽象组件接口,与具体中介者进行交互。

下面是一个简单的Java示例,展示了如何使用中介者模式降低类之间的耦合度:

// 中介者接口
interface Mediator {
    void sendMessage(String message, Colleague colleague);
}

// 具体中介者
class ConcreteMediator implements Mediator {
    private List<Colleague> colleagues = new ArrayList<>();

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

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

// 抽象组件接口
interface Colleague {
    void notify(String message);
}

// 具体组件
class ConcreteColleagueA implements Colleague {
    private Mediator mediator;

    public ConcreteColleagueA(Mediator mediator) {
        this.mediator = mediator;
        mediator.registerColleague(this);
    }

    @Override
    public void notify(String message) {
        System.out.println("ConcreteColleagueA received message: " + message);
    }

    public void sendMessage(String message, Colleague colleague) {
        mediator.sendMessage(message, colleague);
    }
}

class ConcreteColleagueB implements Colleague {
    private Mediator mediator;

    public ConcreteColleagueB(Mediator mediator) {
        this.mediator = mediator;
        mediator.registerColleague(this);
    }

    @Override
    public void notify(String message) {
        System.out.println("ConcreteColleagueB received message: " + message);
    }

    public void sendMessage(String message, Colleague colleague) {
        mediator.sendMessage(message, colleague);
    }
}

// 测试类
public class MediatorPatternExample {
    public static void main(String[] args) {
        Mediator mediator = new ConcreteMediator();
        Colleague colleagueA = new ConcreteColleagueA(mediator);
        Colleague colleagueB = new ConcreteColleagueB(mediator);

        colleagueA.sendMessage("Hello", colleagueB);
    }
}

在这个示例中,我们定义了一个中介者接口Mediator,以及两个具体中介者ConcreteMediator。我们还定义了一个抽象组件接口Colleague,以及两个具体组件ConcreteColleagueAConcreteColleagueB。具体组件通过中介者进行通信,而不是直接相互调用。这样,我们就降低了类之间的耦合度,使得系统更加灵活和易于维护。

向AI问一下细节

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

AI