赞
踩
适配器模式:将一个类的接口转换成客户希望的另一个接口。适配器模式让那些接口不兼容的类可以一起工作。
Adapter Pattern:Convert the interface of a class into another interface clients expect. Adapter lets classes work together that couldn’t otherwise because of incompatible interfaces.
(1)AC2DC(目标抽象类):目标抽象类定义客户所需要的接口,可以是一个抽象类或接口,也可以是具体类。在类适配器中,由于Java语言不支持多重继承,它只能是接口。
(2)Adapter、Adapter2(适配器类):它可以调用另一个接口,作为一个转换器,对Adaptee和AC2DC进行适配。适配器Adapter/Adapter2是适配器模式的核心,在类适配器中,它通过实现AC2DC接口并继承Adapter类来使二者产生联系,在对象适配器中,它通过继承AC2DC并关联一个Adaptee对象使二者产生联系。
(3)Adaptee(适配者类):适配者即被适配的角色,它定义了一个已经存在的接口,这个接口需要适配,适配者类一般是一个具体类,包含了客户希望使用的业务方法,在某些情况下甚至没有适配者类的源代码。
(1)目标抽象类(AC2DC):
package adapte;
//抽象接口---代表所有类型的充电器(适配器)
public interface AC2DC {
public void handleRequest();
}
(2)适配者类(Adaptee):
package adapte;
//适配者类---插座(需要被适配的类)
public class Adaptee {
public void charge() {
System.out.println("已连接电脑,正在充电ing...");
}
}
(3)适配器类(Adapter):
package adapte;
//适配器类---适配器(电脑充电器)
//继承方式实现-->>类适配器
public class Adapter extends Adaptee implements AC2DC{
//处理用户请求
public void handleRequest() {
super.charge();
}
}
(4)适配器类(Adapter2):
package adapte; //适配器类---适配器(升级版电源) //组合方式实现-->>对象适配器 public class Adapter2 implements AC2DC{ private Adaptee a; public Adapter2(Adaptee a) { this.a=a; } public void handleRequest() { a.charge(); } }
(5)客户端(Computer):
package adapte; //客户端---电脑 //import java.io.InputStreamReader; public class Computer { public void insert(AC2DC a) { //适配器(电脑充电需要的充电器) a.handleRequest(); } public static void main(String[] args) { //电脑 Computer computer=new Computer(); //插座 Adaptee adaptee=new Adaptee(); //电源 Adapter adapter=new Adapter(); //升级电源 Adapter2 a2=new Adapter2(adaptee); //充电 computer.insert(a2); //字节流 -->> 字符流(应用了适配器模式) // InputStreamReader in = new InputStreamReader(in); } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。