适配器模式一般可分为类适配器、对象适配器和接口适配器三种模式;
类适配器是指该适配器继承至某个源类,因此它只为这个类提供适配服务;因为适配器继承了源类,所以它就拥有了源类的能力,同时我们可以给该适配器类添加新的方法,去完成目标对象的任务而该任务源类对象是无法完成,这样我们就实现了从源类到目标类的适配工作。也可以这样理解,假设目标接口类需要拥有源类的能力,同时还需要新增一些能力,这时我们就可以新建一个适配器类继承源类,同时实现目标接口类,则该适配器就既拥有源类的功能,又拥有目标类需要新增而源类没有的功能。
对象适配器和类适配器的思想基本一致,只是对象适配器不去继承源类,而是在适配器类中持有源类对象,当然还是实现目标接口类。这时要使用源类的功能时,直接通过持有的源类对象去掉源类的方法。需要注意的一点是,目标接口对象中规定拥有的源类方法名称需要和源类方法中的名称一致。
接口适配器模式是指当某个接口类定义的方法过多,而我们要实现该接口类的话就需要实现该接口的所有方法,但此时我们又不需要这么多方法,只需要实现其中一部分方法就能满足我们的功能需求时,可以这样做,新建一个抽象类,并实现该接口,同时实现该接口的所有方法(写空方法即可,即只需要一对花括号),然后我们就不直接和接口类打交道,而是改为同该抽象类打交道,继承该抽象类,然后实现我们想要的方法就行了。