什么是适配器模式:
就是将一个类的接口转换成客户需要的另一个接口,它的职责是将本来不能在一起工作的类,可以一起工作。
适配器模式中的角色:
目标接口:客户所期待的接口,目标可以是具体的,或抽象的类,也可以是接口。
需要被适配的类: 需要适配的类或者被适配的类
适配器:通过包装一个需要适配的对象,把原接口转换成目标接口。
案例:
如果我们有一台笔记本,只有有个usb键盘接口,现在我只有一个ps/2接口的键盘,我想连上这台笔记本。我们会怎么做?
一般都是找个适配器,两者就可以在一起工作了。
// 目标接口 public interface TargetObject { void handleRequest(); }
//被适配的类(相当于我们举的例子中ps/2键盘) public class Adapted { public void request(){ Log.d("Adapted","ps/2接口键盘也可以连上只有usb接口的笔记本"); } }
//这是客户端类,相当于我们举的例子中的笔记本,而且我们的笔记本只有usb接口 public class Client { public void needUsb(TargetObject target){ target.handleRequest(); } }
//适配器(相当于usb和ps/2的转接器) public class Adapter implements TargetObject{ //使用对象组合的方式 private Adapted adapted; public Adapter(Adapted adapted) { this.adapted = adapted; } @Override public void handleRequest() { //具体工作时,本来这里该usb键盘工作的,现在由ps/2键盘(被适配的类)处理 adapted.request(); } }
//实例化客户端(本例中是笔记本) Client client=new Client(); //实例化被适配的类(本例中是ps/2键盘) Adapted adapted=new Adapted(); //实例化适配器(本例中是usb和ps/2的适配器) TargetObject target=new Adapter(adapted); //调用客户端的方法 client.needUsb(target);
结果: