用于填补“现有的程序”和“所需的程序”之间差异。
Adapter模式有以下两种:
- 类适配器模式(使用继承的适配器)
- 对象适配器模式(使用委托的适配器)
示例
将输入的字符串显示为(Hello)或是*Hello*。
类适配器模式(使用继承)
类图
Banner类
1 | public class Banner { |
Print接口
1 | public interface Print { |
PrintBanner类
1 | public class PrintBanner extends Banner implements Print { |
Main类
1 | public class Main { |
运行结果
1 | (Hello) |
对象适配器模式(使用委托)
类图
Print类
1 | public abstract class Print { |
PrintBanner类
1 | public class PrintBanner extends Print { |
登场角色
在类适配器模式中,Adapter角色通过继承来使用Adaptee角色,而在对象适配器模式中,Adapter角色通过委托来使用Adaptee角色。
Targer(对象)
该角色负责定义所需的方法。在示例程序中,由Print接口(使用继承时)和Print类(使用委托时)扮演此角色。
Client(请求者)
该角色负责使用Target角色所定义的方法进行具体处理。在示例程序中,由Main类扮演此角色。
Adaptee(被适配)
Adaptee是一个持有既定方法的角色。在示例程序中,由Banner类扮演此角色。
Adapter(适配)
Adapter模式的主人公。使用Adaptee角色的方法来满足Target角色的需求,这是Adapter模式的目的,也是Adapter角色的作用。在示例程序中,由PrintBanner类扮演这个角色。