一、接口适配器模式
1、接口适配器模式又被称为 适配器模式(Default Adapter Pattern)或者 缺省适配器模式;
2、当不需要全部实现接口提供的方法时,可先设计一个抽象类实现接口,并为该接口中每个方法提供一个默认实现(空方法),那么该抽象类的子类可有选择地覆盖父类的某些方法来实现需求。
3、适用于一个接口不想使用其所有的方法的情况;
二、应用案例
1) Android中的属性动画ValueAnimator类可以通过addListener(AnimatorListener listener)方法添加监听器, 那么常规写法如下:
2) 有时候我们不想实现Animator.AnimatorListener接口的全部方法,我们只想监听onAnimationStart,我们会如下:
3)AnimatorListenerAdapter类,就是一个接口适配器, 代码如下图:它空实现了Animator.AnimatorListener类(src)的所有方法:
4)AnimatorListener 是一个接口:
5)程序里的匿名内部类就是 Listener 具体实现类:
三、代码案例
UML 类图:
src 接口:
1 public interface Interface {
2
3 public void m1();
4 public void m2();
5 public void m3();
6 public void m4();
7
8 }
适配器抽象类:
1 /**
2 * 将 interface 的方法进行默认实现
3 */
4 public abstract class AbsAdapter implements Interface {
5 @Override
6 public void m1() {
7
8 }
9
10 @Override
11 public void m2() {
12
13 }
14
15 @Override
16 public void m3() {
17
18 }
19
20 @Override
21 public void m4() {
22
23 }
24 }
客户端:
1 public class Client {
2 public static void main(String[] args) {
3 AbsAdapter absAdapter = new AbsAdapter() {
4 //只需要去覆盖我们需要使用接口方法
5 @Override
6 public void m1() {
7 System.out.println("使用了 m1 的方法");
8 }
9 };
10
11 absAdapter.m1();
12 absAdapter.m2();
13 }
14 }