[OOD] 适配器模式

简介: 背景世界上电源插头标准很多, 这里只说国标和英标:中国标准:英国标准:各地插头标准不同带来的另一个问题是各地的标准插座主要针对当地插头设计。 常在世界各地跑的朋友都知道一定要配个转接头, 比如这个:这个转换头名称是World Travel Adapter, 所起的作用就是适配。

背景

世界上电源插头标准很多, 这里只说国标和英标:
中国标准:



英国标准:



各地插头标准不同带来的另一个问题是各地的标准插座主要针对当地插头设计。 常在世界各地跑的朋友都知道一定要配个转接头, 比如这个:



这个转换头名称是World Travel Adapter, 所起的作用就是适配。(严格来说,上面的转接头还应用了工作方法。)
*另一种形式是由插座提供适配,作用是一样的。


在软件领域里,我们也常常需要对接两种不同的接口。在设计上有两种模式可以参考。下面以文件操作适配到数据库操作的适配器为例。
1. 多重继承



这样在Adapter里CreateDB()的处理就是调用FileAPI::Open();


2. 组合模式

这时Adapter::CreateDB()实现就是adaptee_->Open();


讨论

适配器模式常常与桥接模式相比较,两者最大的不同在于解决的问题不同。适配器用于对接两个不同的接口,而桥接则主要为了隔离变化。从应用上来说,一个是被动的,一个是主动的。 所谓被动的,就是当前的接口的差异是无法轻易改变的,必须引入一个中间层来解决。而中间层的引入往往带有性能、以及不必要的数据拷贝等开销,详细参考关于层的反模式讨论
如果接口是可控,就要尽量避免接口不一致的情形。而不是等待使用Adapter来处理。


目录
相关文章
|
4月前
|
设计模式 C++
结构型 适配器模式
结构型 适配器模式
16 0
|
9月前
|
设计模式
创建型模式分类
创建型模式分类
|
10月前
|
设计模式 Java
【Java设计模式 设计模式与范式】结构型模式 一:适配器模式
【Java设计模式 设计模式与范式】结构型模式 一:适配器模式
46 0
|
10月前
|
设计模式 缓存 Java
【Java设计模式 设计模式与范式】结构型模式 三:装饰器模式(上)
【Java设计模式 设计模式与范式】结构型模式 三:装饰器模式
70 0
【Java设计模式 设计模式与范式】结构型模式 三:装饰器模式(上)
|
10月前
|
设计模式 缓存 Java
【Java设计模式 设计模式与范式】结构型模式 三:装饰器模式(下)
【Java设计模式 设计模式与范式】结构型模式 三:装饰器模式
50 0
|
10月前
|
设计模式 Java
【Java设计模式 设计模式与范式】结构型模式 五:外观模式
【Java设计模式 设计模式与范式】结构型模式 五:外观模式
54 0
|
10月前
|
设计模式 存储 安全
【Java设计模式 设计模式与范式】结构型模式 六:组合模式
【Java设计模式 设计模式与范式】结构型模式 六:组合模式
46 0
|
10月前
|
设计模式 XML JSON
【Java设计模式 设计模式与范式】创建型模式 四:抽象工厂模式
【Java设计模式 设计模式与范式】创建型模式 四:抽象工厂模式
38 0
|
10月前
|
设计模式 监控 Oracle
【Java设计模式 设计模式与范式】结构型模式 四:桥接模式
【Java设计模式 设计模式与范式】结构型模式 四:桥接模式
40 0
|
10月前
|
设计模式 缓存 搜索推荐
【Java设计模式 设计模式与范式】创建型模式 三:工厂方法模式
【Java设计模式 设计模式与范式】创建型模式 三:工厂方法模式
39 0