代理模式、外观模式和中介者模式区别

1.代理模式:

代理模式通过引入一个代理对象来控制对原对象的访问。代理对象在客户端和目标对象之间充当中介,负责将客户端的请求转发给目标对象,同时可以在转发请求前后进行额外的处理。

使用场景:
  • 当需要在访问一个对象时进行一些控制或额外处理时。

2.外观模式:

外观模式隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。

使用场景
  • 当客户端不需要了解系统内部的复杂逻辑和组件交互时。
  • 当需要为整个系统定义一个清晰的入口点时

以电脑开、关机为例

启动电脑(按电源键):启动CPU、启动内存、启动硬盘

关闭电脑(按电源键):关闭硬盘、关闭内存、关闭CPU

3.中介者模式

中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性,属于行为型模式。

中介者模式定义了一个中介对象来封装一系列对象之间的交互。中介者使各对象之间不需要显式地相互引用,从而使其耦合松散,且可以独立地改变它们之间的交互。

使用场景
  • 当系统中多个类相互耦合,形成网状结构时。

通过聊天室实例来演示中介者模式。实例中,多个用户可以向聊天室发送消息,聊天室向所有的用户显示消息。我们将创建两个类 ChatRoomUserUser 对象使用 ChatRoom 方法来分享他们的消息。

MediatorPatternDemo,我们的演示类使用 User 对象来显示他们之间的通信