'Adapter' 和“中介者”模式之间的确切区别是什么?

What is the exact difference between 'Adapter' and 'Mediator" patterns?

我知道 Adapter 是一种结构模式,Mediator 是一种行为模式。但据我所知,他们两个都在做的是连接两个(或更多)其他 类,这些 类 可能不兼容(不太可维护)以进行直接通信。

有人可以对这两者进行仔细比较并指出确切的区别吗?

这些是 TutorialsPoint 中 Adapter and Mediator 解释的链接。

这些是资源制作的解释。 Adapter, Mediator.

他们没有太多共同点,IMO。

调解器用于避免将多个组件耦合在一起。与每个组件 "talking" 直接相互(因此必须相互了解并知道如何相互通信)不同,每个组件都与一个对象对话:调解器。这个名字是故意选择的:当你和你的邻居打架并且无法与他沟通时,你会去找调解员而不是互相交谈,你们都与调解员交谈,调解员试图解决问题。

适配器用于"transform" 将具有一个接口的对象转换为具有另一个接口的对象。就像,例如,将欧洲电源插座转换为美国电源插座的电源适配器,以便您可以在欧洲使用您的美国剃须刀。 简单示例:您需要将一个 Runnable 存储到一个 Callable 列表中。 Runnable 有一个方法 运行()。 Callable 有一个方法 call()。因此,您创建了一个适配器:

public class RunnableAdapter implements Callable {
    private Runnable runnable;

    public RunnableAdapter(Runnable runnable) {
        this.runnable = runnable;
    }

    public void call() {
        runnable.run();
    }
}

Adapter Pattern 当我们已经有两个代码库一个 consumer code 和另一个 producer code 但是 format 其中 Consumer 希望产品与 Producer 代码生成的产品不同。 这里因为生产代码已经存在,我们不希望修改现有代码[代码修改关闭,扩展开放]Adapter class 可以将 Producer 生产的产品转换成 Consumer 代码所期望的格式。 格式可能是 return 类型不同的 API根据生产者代码和消费者代码的期望。适配器 class 使用生产者代码的 API 并根据消费者的期望转换它们。

现在Mediator模式在我们设计架构或者重构的过程中很有用。它有助于轻松和松散耦合的对象交互。定义一个 对象 [Mediator],它封装了一组对象如何交互 。调解器通过防止对象相互显式引用来促进松散耦合,它允许您独立地改变它们的交互。

JB Nizet 已经写了一个很好的答案。我只想用更简单的词来解释差异:

    当你不知道时,应该使用
  • Mediator如何与其他对象通信,否则您 不允许

  • 适配器应该在你知道时使用与对象通信,但这些对象可能不支持某些通信方法或不同

Can some one give a close comparison between these two and point out the exact difference?

sourcemaking 链接中的 intentchecklist 已在您的问题中引用,提供了很好的见解。

Adapter 将 class 的接口转换为客户端期望的另一个接口

Mediator 通过防止对象显式地相互引用来促进松散耦合,它允许您独立地改变它们的交互。

isn't there something that implicitly means that mediator is an adapter that supports for than 2 classes. Due to this reason, Mediator can't act as an Adapter.

  1. Mediator 不会将不兼容的接口转换为兼容的接口,这与 Adapter 不同。

  2. Mediator 与同一界面的 Collegues 交互。

  3. Mediatorabstracts/centralizes同事对象之间的任意通信

带有代码示例的相关帖子:

Mediator Vs Observer Object-Oriented Design Patterns

Difference between Bridge pattern and Adapter pattern