适配器模式将一个类的接口,转化为客户期望的另一个接口.适配器让原本接口不兼容的类可以合作无间.
适配器的设计首先需要实现想转化成的类型接口,接着需要取得要适配的对象引用,可以利用构造器取得这个引用,然后可以用被适配的对象去实现需要实现的类型接口的方法.
客户使用适配器的过程如下:
1.客户通过目标接口调用适配器的方法对适配器发出请求.
2.适配器使用被适配者接口把请求转化为被适配者的一个或多个调用接口.
3.客户收到调用的结果,但并未察觉这一切是适配器起的转换作用.
下面是对于适配器模式的示例,其中Book为用户所希望获得的接口,被适配的接口是Paper,适配器是BookAdapter.
//Book为所期望的目标接口 public interface Book { public void getBook(); } class MathBook implements Book/*一个具体的实现类*/{ public void getBook() { System.out.println("I am get a Math book."); } } class BookAdapter implements Book /*一个适配器对象*/{ Paper paper; //被适配的接口 public BookAdapter(Paper paper)/*通过构造将被适配的接口传入适配器*/ { super(); this.paper = paper; } @Override public void getBook() { for(int i=0;i<50;i++) { paper.getContent(); } } }
/* * 需要被适配的接口. * */ public interface Paper { public void getContent(); } class APaper implements Paper { @Override public void getContent() { System.out.println("get the Content!"); } }
public class Test { public static void main(String[] args) { Paper p=new APaper(); Book book=new MathBook(); book.getBook(); Book book2=new BookAdapter(p); //通过适配器获取所需接口 book2.getBook(); } }
适配器模式的类图如下:
时间: 2024-10-02 09:07:19