jdk中最经典的适配器模式应用便是字符流和字节流InputStreamReader,从名字可以看出前面是字节流,后面是字符流,我们生活中的比如买的港版iphone,拿到国内来充电就需要一个转接头
下面写一个简单的实例:
首先由一个特殊类,而我们想在另外一个一个接口的实现类中使用这个特殊类
package com.zcj.adapterpattern;
public class Adateree {
public void specificRequest(){
System.out.println("使用特殊类,我具有特殊功能");
}
}
package com.zcj.adapterpattern;
public interface Target {
public void request();
}
已经拥有一个普通实现类,但是不能使用特殊类的方法
package com.zcj.adapterpattern;
public class CommenTarget implements Target {
@Override
public void request() {
System.out.println("普通类。。只有普通功能");
}
}
使用适配器
package com.zcj.adapterpattern;
public class Adapter extends Adateree implements Target {
@Override
public void request() {
// TODO Auto-generated method stub
super.specificRequest();
}
}
最终用来测试比较
package com.zcj.adapterpattern;
public class AdapterTest {
public static void main(String[] args) {
Adapter adapter = new Adapter();
adapter.request();
CommenTarget aCommenTarget = new CommenTarget();
aCommenTarget.request();
}
}
结果如下:
使用特殊类,我具有特殊功能
普通类。。只有普通功能
我们在目标接口中使用了特殊类的方法,解决了普通实现类不能实现的功能