适配器模式
概念及作用
- 将一种类的接口转换为另一种客户期望的接口,在适配器模式下允许有不相同的接口的类一起工作
- 使用新接口包装现有的类,使其能够满足需求
- 将旧组件与新系统相匹配
1 | 重复使用一直是痛苦和难以捉摸的。一个原因是设计新东西的困难,同时重用旧的东西。 |
UML
- Target:该角色定义要转换成的目标接口。
- Adapee:需要被转换成目标角色的源角色。
- Adapter:该角色是适配器模式的核心,其职责是通过继承或者类相关的方式,将源角色转换成目标角色
优缺点
优点
- 适配器可以让两个没有任何关系的类在一起运行。
- 增加了类的透明性
- 增加了类的复用性
- 增加了代码的灵活性
缺点
原文:1
2
3An "off the shelf" component offers compelling functionality that you would
like to reuse, but its "view of the world" is not compatible with the philosophy
and architecture of the system currently being developed.
- “现成”组件提供了您想要重用的功能,但其“世界观”与当前正在开发的系统的理念和架构不兼容。
例子
通过将一个类的接口转换为客户端期望的接口,Adapter模式允许其他不兼容的类一起工作。 套接字扳手提供了适配器的示例。
如果驱动器的尺寸相同,则插座连接到棘轮。美国的典型驱动器尺寸为1/2“和1/4”。
显然,除非使用适配器,否则1/2“驱动棘轮将不适合1/4”驱动器插座。
1/2“至1/4”适配器具有1/2“内螺纹连接,可安装在1/2”驱动棘轮上,1/4“外螺纹连接适合1/4”驱动插座。
示例代码
(一)
1 | interface Shape { |
(二)
1 | /* The OLD */ |
(三)
1 |
|
结果:1
2
3
4Playing mp3 file. Name: beyond the horizon.mp3
Playing mp4 file. Name: alone.mp4
Playing vlc file. Name: far far away.vlc
Invalid media. avi format not supported