Skip to content

适配器模式与桥接模式

  • 适配器模式:解决已有接口间不兼容问题,通常用于现有系统与第三方产品功能的集成,采用增加适配器的方式将第三方类集成到系统中。

  • 桥接模式:用户可以通过接口继承或类继承的方式对系统进行扩展。

  • 适配器模式:系统初步完成设计之后,发现系统与已有类无法协同工作时,可采用适配器模式。

  • 桥接模式:用于系统的初步设计,对于存在两个独立变化维度的类可以将其分为抽象化和实现化两个角色,分别进行变化。

应用示例

在某系统的报表处理模块中,需要将报表显示和数据采集分开,系统可以有多种报表显示方式也可以有多种数据采集方式,如可以从文本文件中读取数据,也可以从数据库中读取数据,还可以从Excel文件中获取数据。

如果需要从Excel文件中获取数据,则需要调用与Excel相关的API,而这个API是现有系统所不具备的,该API由厂商提供。使用适配器模式和桥接模式设计该模块。

==模式分析==:设计过程中,由于存在报表显示和数据采集两个独立变化的维度,因此可以使用桥接模式进行初步设计;为了使用Excel相关的API来进行数据采集需要使用适配器模式。

图片1.png

外观模式与单例模式

  • 外观模式:外部与子系统的通信通过一个统一的外观对象进行,为子系统中的一组接口提供一个统一的入口。

  • 单例模式:确保某一个类只有一个实例。

==模式分析==:很多情况下为了节约系统资源,在外观模式中,通常只需要一个外观类,并且此外观类只有一个实例,因此可以通过单例模式来设计外观类,从而确保系统中只有唯一一个访问子系统的入口,并提高系统资源利用率。 图片2.png

适配器模式与策略模式

  • 适配器模式:将一个类的接口转换成客户希望的另一个接口。适配器模式让那些接口不兼容的类可以一起工作。
  • 策略模式:定义一系列算法,将每一个算法封装起来,并让它们可以相互替换。策略模式让算法可以独立于使用它的客户变化。
  • 判断使用该联用的条件是:一个系统需要动态地在几种算法中选择一种;同时,需要选择的方法由已有类实现,可以直接调用。

适配器模式与观察者模式

  • 适配器模式:将一个类的接口转换成客户希望的另一个接口。适配器模式让那些接口不兼容的类可以一起工作。
  • 观察者模式:定义对象之间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象都得到通知并被自动更新。
  • 判断使用该联用的条件是:系统中一个对象的变化会导致一个或多个其他对象发生改变;同时,部分对象的方法有已有类来实现。

组合模式与观察者模式

  • 组合模式:组合多个对象形成树形结构以表示具有部分-整体关系的层次结构。组合模式让客户端可以统一对待单个对象和组合对象。
  • 观察者模式:定义对象之间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象都得到通知并被自动更新。
  • 判断使用该联用的条件是:系统中一个对象的变化会导致一个或多个其他对象发生改变;同时,系统中存在具有整体和部分的结构层次,希望能通过一种方式忽略整体和部分的差异,客户端可以一致地对待他们。