什么时候需要适配器模式?
现有的程序无法直接使用,且这部分代码不想动或者,,就是不敢动,需要经过适当变换之后才能使用时,可以用适配器来解决
Adaptor模式,又称Wrapper模式,有以下两种
- 类适配器模式(使用继承实现)
- 对象适配器模式(使用委托实现)
1、类适配器模式
如下是一段Banner显示字符串的程序
public class Banner {
private String text;
public Banner(String text) {
this.text = text;
}
public void showWithParen() {
System.out.println("(" + text + ")");
}
public void showWithAster() {
System.out.println("*" + text + "*");
}
}
public interface Print {
void printWeak();
void printStrong();
}
public class PrintBanner extends Banner implements Print {
public PrintBanner(String text) {
super(text);
}
@Override
public void printWeak() {
showWithParen();
}
@Override
public void printStrong() {
showWithAster();
}
}
public class Main {
public static void main(String[] args){
Print p = new PrintBanner("Hello");
p.printWeak();
p.printStrong();
}
}
类图

2、委托适配器模式
委托,将某个方法的实际处理交给其他实例的方法完成。
public abstract class Print {
public abstract void printWeak();
public abstract void printStrong();
}
public class PrintBanner extends Print {
private Banner banner;
public PrintBanner(String text) {
this.banner = new Banner(text);
}
@Override
public void printWeak() {
banner.showWithParen();
}
@Override
public void printStrong() {
banner.showWithAster();
}
}
类扮演的角色
- Target对象,负责定义所需要的方法,Print接口或抽象类
- Adaptee被适配,Banner
- Adaptor适配器