适配器模式简介

适配器介绍:

适配器模式可以提高我们的开发效率,比如我们常见的LIstView、GridView和RecyclerView都需要使用Adapter。他就像一个粘合剂,将两个不兼容的类融合到一起。

适配器模式的定义:

把一个类的接口变成客户端所期待的另一个接口,使本来不不匹配二无法再一起工作的类可以在一起工作。

使用场景

1)系统需要使用现有的类,而类的接口不符合要求 2)需要建立一个可以重复使用的类,用于一些彼此之间没有太大关联的类 3)需要一个统一的接口,而输入类型不确定

分类

适配器模式分为两种类型:类适配器模式和对象适配器模式。 类适配器模式:通过继承adaptee类来实现 Interface(operation1)——->adapter(operation1)<——-adaptee(opteration2) 对象适配器模式:通过构造adaptee的实例来实现 Interface(operation1)——->adapter(operation1)<——-adaptee(opteration2)

类适配器模式

/**
 * Created by libin on 16/11/17.
 * target
 */

public interface FiveVolt {
    int getFiveVole();
}
/**
 * Created by libin on 16/11/17.
 * adaptee
 */

public class Volt220 {
    public int getVolt220(){
        return 220;
    }
}
/**
 * Created by libin on 16/11/17.
 * 类适配器模式
 * adapter
 */

public class Class_adapter extends Volt220 implements FiveVolt{

    @Override
    public int getFiveVole() {
        return 5;
    }
}

对象适配器

/**
 * Created by libin on 16/11/17.
 * Targeet
 */

public interface FiveVolt {
    int getFiveVole();
}
/**
 * Created by libin on 16/11/17.
 * adaptee
 */

public class Volt220 {
    public int getVolt220(){
        return 220;
    }
}
/**
 * Created by libin on 16/11/17.
 * 对象适配器模式
 * adapter
 */

public class Target_adapter implements FiveVolt{
    Volt220 volt220;

    public Target_adapter(Volt220 mVolt220) {
        volt220 = mVolt220;
    }


    public int getVolt220() {
        return volt220.getVolt220();
    }

    @Override
    public int getFiveVole() {
        return 5;
    }
}

该项目github源码:https://github.com/libin7278/DesignModle

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏闰土大叔

还在试用期,程序员如何避免被辞退?

最近几个月,我司技术部门有一些人员的变动,自己身边也走了一些老同事,来了一些新人。

1.1K60
来自专栏Hadoop实操

Hadoop SQL客户端工具之Dbeaver安装及使用

最近热心网友推荐了很多Hadoop平台的SQL客户端工具,Fayson在前面的文章《0459-如何使用SQuirreL通过JDBC连接CDH的Hive(方式一)...

46350
来自专栏编程坑太多

「小程序JAVA实战」小程序视图之细说数据绑定(13)

10630
来自专栏Debian社区

Git 免用户名密码访问代码库

在使用 git 时,如果不是使用ssh 和 key 验证的方式,则每次提交都会让输入用户名和密码,会显得比较麻烦,在服务器上配置时也无法做到自动同步更新代码。那...

69540
来自专栏玩转JavaEE

一个简单的案例,理解threejs中几个基本概念

种种原因吧,需要在和大伙分享Elasticsearch的间隙,也来分享一下threejs的一些用法。有一个小小愿望,希望这个threejs教程最终也能成一个系列...

46320
来自专栏Debian社区

Debian 环境中安装git服务器 Gogs(下)

在本教程中,我们将使用 Gogs 在 Debian 9 上按步骤指导您安装和配置您的私有 Git 服务器。这篇教程中涵盖了如何在 Debian Stretch ...

14310
来自专栏AndroidTv

前端入门7-JavaScript语法之相关术语声明正文-相关术语

作为一个前端小白,入门跟着这几个来源学习,感谢作者的分享,在其基础上,通过自己的理解,梳理出的知识点,或许有遗漏,或许有些理解是错误的,如有发现,欢迎指点下。

11230
来自专栏linux驱动个人学习

启动期间的内存管理之初始化过程概述----Linux内存管理(九)

在内存管理的上下文中, 初始化(initialization)可以有多种含义. 在许多CPU上, 必须显式设置适用于Linux内核的内存模型. 例如在x86_3...

23430
来自专栏Debian社区

GitHub 发布10月21日系统故障分析报告

GitHub 刚刚通过官方博客发布了 21 日“挂掉”的事件分析。GitHub 指出此次事件发生的原因是在 10 月 21 日 22:52 UTC 进行日常维护...

9820
来自专栏weixuqin 的专栏

Ubuntu 安装后的配置及美化(二)

上篇文章讲了安装ubuntu后的一系列基础的配置,已经可以满足日常的使用了,这篇文章讲一下安装 IDE 及一些其他的配置。

19230

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励