举个例子,电脑使用的是12V的直流电,家庭用电源提供的是220V的交流电,这时我们会使用AC适配器。AC适配器把220V的交流电转化为12V的直流电。
我们把像AC适配器这样,介于提供的东西和最终需要的东西之间,使前者变得适合最终需要的装置,叫做Adapter(适配器)。英语Adapt就是使之适合的意思。
程序的世界也是如此,我们把填补提供者和需要者之间差异的设计模式,叫做Adapter模式,有时候也叫Wrapper模式。
Adapter模式有以下两种:
・通过类实现的Adapter模式(使用继承)
・通过接口实现的Adapter模式(使用委任)
实例程序(1) (使用继承)
类图Fig.2-2
List2-1 Banner类
public class Banner {
private String string;
public Banner(String string) {
this.string = string;
}
public void showWithParen() {
System.out.println("(" + string + ")");
}
public void showWithAster() {
System.out.println("*" + string + "*");
}
}
List2-2 Print接口
public interface Print {
public abstract void printWeak();
public abstract void printStrong();
}
List2-3 PrintBanner类
public class PrintBanner extends Banner implements Print {
public PrintBanner(String string) {
super(string);
}
public void printWeak() {
showWithParen();
}
public void printStrong() {
showWithAster();
}
}
List2-4 Main类
public class Main {
public static void main(String[] args) {
Print p = new PrintBanner("Hello");
p.printWeak();
p.printStrong();
}
}
执行结果:
(Hello)
×Hello*