• 第四节:接口适配器模式


    一、接口适配器模式

      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 }
  • 相关阅读:
    .net AJAX运行错误 未能加载文件或程序集 "System.Web....”的解决办法
    mysql免安装版使用方法
    XP下IIS+php 5.2.4配置
    distinct order by
    手机操作系统介绍
    .net自带 SQL Server 2005 Express使用
    统计字符串数组中每个字符串所出现的次数
    juqery 学习之三 选择器<层级><基本>
    juqery 学习之三 选择器<简单><内容>
    juqery 学习之三 选择器<可见性><元素属性>
  • 原文地址:https://www.cnblogs.com/niujifei/p/14289617.html
Copyright © 2020-2023  润新知