1、什么是适配器模式?
在程序中经常会有现存的代码没法直接使用的情况(如版本兼容),需要做适当的变换才能使用,处理这两者之间差异的设计模式就叫适配器设计模式。
适配器模式分为:类适配器模式(继承方式)和对象适配器模式(组合方式)。
举个实际点的例子:如果项目中你只能收发json格式的报文、他只能收发xml格式的,那这就需要中间有人帮你们处理,这个中间人即适配器,这种设计模式就是适配器模式。
2、类适配器模式
现有Banner类、Print接口、BannerPrint类(继承了Banner类,实现Print接口)。
public class Banner {
private String string;
Banner(String string){
this.string = string;
}
public void showWithParen(){
System.out.println("("+string+")"); //打印(hello)
}
public void showWithAster(){
System.out.println("*"+string+"*");//打印*hello*
}
}
public interface Print {
void printWeak(); //想让他打印(hello)
void printStrong(); //想让他打印*hello*
}
public class PrintBanner extends Banner implements Print{
PrintBanner(String string){
super(string);
}
@Override
public void printWeak() {
showWithParen();
}
@Override
public void printStrong() {
showWithAster();
}
}
这里的适配器不够复杂,可能感觉没多大用,现在是在展示适配模式,真实环境处理适配不会这么简单
3、对象适配器模式
对象适配器模式与类适配器模式的区别在于,PrintBanner不再继承Banner,而是含有一个Banner类型的成员属性,同时初始化PrintBanner的时候,同时初始化Banner。这里不在贴代码。
4、源码
InputStreamReader是InputStream和Reader之间的桥梁,比较复杂,知道就行。