适配器模式自己的理解哪有不对望多加指正:
适配器模式,讲一个类转化为另外一个类中间的中介就可以比喻为适配器,生活中也有很多的例子,比如USB转接口等等
下面以下图为例进行理解:
Target 是目标接口,相当于一个标准告诉兄弟们大家都按这个走不要跑偏哦,
Adapter 是适配器,
Adaptee是被适配对象,
适配器持有被适配对象的引用,在方法内部就可以进行调用被适配对象的方法了,适配器实现了目标接口,在客户端类中只需要访问目标接口进行了
1:创建目标接口:Target
public interface Target{
public void Adapter();
}
2:创建被适配器类:
public class Adaptee{
public void test(){
System.out.pritnln("I can finsh some work");
}
}
3:创建适配器类:
public class Adapter implements Target{
private Adaptee a;
bublic Adapter(Adaptee a){
this.a = a;
}
public void Adapter(){
a.test();
}
}
4:创建客户端类:
public class Client{
public void test(Targer t){
t.Adapter();
}
public static void main(String[] args){
Client c = new Client();
Adaptee a = new Adaptee();
Target t = new Adapter(a);
c.test(t);
}
}
在jdk中实现的适配器模式最知名的就应该是InputStremReader和OutputStreamWriter了
让我们看看它是怎么实现的:
这里的适配器就是InputSreamReader了,将输入的字节流转换为字符流,被适配对象是InputStream了,目标对象是Reader
InputStreamReader实现了Read抽象类,并且持有了InputStream的引用,这里是通过StreamDecoder类间接的持有,因为从byte到char要经过编码。