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

前言

外观模式、代理模式、中介模式,都挺像,统一起来记录一下它们的区别吧~

外观模式

Facade Pattern:又叫门面模式,定义了一个高层接口,为子系统中的一组接口提供一个统一的接口。

img

代理模式

Proxy Pattern:为某个对象提供一个代理,并由这个代理对象控制对原有对象的访问。

消息队列就是这种模式

img

中介者模式

Mediator Pattern:又叫调停者模式,用一个中介对象(中介者)来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。

中介者模式将一个网状的系统结构变成一个以中介者对象为中心的星形结构,在这个星型结构中,使用中介者对象与其他对象的一对多关系来取代原有对象之间的多对多关系。所有成员通过中介者交互,方便拓展新的成员。

img

外观模式 PK 代理模式

  1. 代理模式中的代理角色和真实角色都继承于同一个类;而外观模式是多个类的集合
  2. 代理角色与真实角色接口相同,功能一致,代理角色实现的是真实角色的功能;外观这模式的子系统功能不同,根据不同需要由外观类统一配置

外观模式 PK 中介者模式

  1. 外观模式是结构型模式;中介者模式是行为型模式
  2. 外观模式是对子系统提供统一的接口;中介者模式是用一个中介对象来封装一系列同事对象的交互行为
  3. 外观模式协议是单向;中介者模式协议是双向
  4. 外观模式所有的请求处理都委托给子系统完成;中介者模式则由中心协调同事类和中心本身共同完成业务

代理模式 PK 中介者模式

  1. 代理模式是结构型模式;中介者模式是行为型模式
  2. 代理模式是一对一,一个代理只能代表一个对象;中介者模式是一对多,一个中介者对应多个客户
  3. 代理模式只能代理一方,如果 PB 是 A 的代理,那么 C 可以通过 PB 访问 A ,但是 A 不能通过 PB 访问 C;中介者模式钟,A 可以通过中介访问 C,C 也可以通过中介访问 A