一、接口适配器模式

  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 }

 

posted on 2021-01-17 17:45  格物致知_Tony  阅读(378)  评论(0编辑  收藏  举报