文档章节

六、结构型模式:适配器

安卓工程师王恒
 安卓工程师王恒
发布于 2017/04/13 17:43
字数 376
阅读 6
收藏 0

分为:类的适配器、对象的适配器、接口的适配器

情景:我需要手持设备计算东西,返回一个String的结果。目前已经有了接口

public interface IPda {
    String runTask();
}


需求:使用华为手机当作手持设备计算出结果

public String get(IPda pda){
        return pda.runTask();
 }

调用这个get方法,使用华为手机,这时你会发现一个问题,华为手机实现的是IPhone接口,类型不一样不能作为get方法的参数。

下面使用适配器的思想:

public class HuaWeiPda extends HuaWei implements IPda {

    @Override
    public String runTask() {
        // TODO Auto-generated method stub
        return "来自华为的计算";
    }

}

这里继承华为手机,实现手持设备接口,因此该类可以作为get方法的参数,该类适配了华为手机与手持设备。

这是类的适配器模式,此外还有对象的适配器模式

public class HuaWeiPdaObj implements IPda{
    private HuaWei huawei;
    
    public HuaWeiPdaObj(HuaWei huawei) {
        super();
        this.huawei = huawei;
    }

    @Override
    public String runTask() {
        // TODO Auto-generated method stub
        return "来自华为手机的计算";
    }
    
}

一个变体而已,没有继承华为手机,而是持有了华为手机的对象,那么该类就可以拿着该对象,去做该对象能做的是比如call(String num)

接口的适配器

接口的适配器没什么说的,一个接口有若干方法,用一个抽象类去实现,以后用到该接口的话就继承抽象即可

© 著作权归作者所有

上一篇: Android 存储
下一篇: 二、抽象工厂
安卓工程师王恒
粉丝 2
博文 122
码字总数 44763
作品 0
浦东
Android工程师
私信 提问
适配器模式——结构型模式

思路: 一个软件团队开发绘图系统,设计了圆对象(Circle)、矩形对象(Rectangle),线对象(Line)。都支持Draw()函数,即可以通过Draw()函数绘制图形。我们应该如何做呢? 那么现在,为了加快项...

落叶-归根
2016/05/26
57
0
【设计模式】适配器模式 Adapter Parttern

适配器模式在软件开发界使用及其广泛,在工业界,现实中也是屡见不鲜。比如手机充电器,笔记本充电器,广播接收器,电视接收器等等。都是适配器。 适配器主要作用是让本来不兼容的两个事物兼...

风之源
2018/08/08
0
0
【设计模式】——适配器模式

与电源适配器相似,在适配器模式中引入了一个被称为适配器(Adapter)的包装类,而它所包装的对象称为适配者(Adaptee),即被适配的类。适配器的实现就是把客户类的请求转化为对适配者的相应接口...

u013043341
2017/07/02
0
0
设计模式之7个结构型模式

结构型模式概述 结构型模式(Structural Pattern)描述如何将类或者对象结合在一起形成更大的结构,就像搭积木,可以通过简单积木的组合形成复杂的、功能更为强大的结构。 结构型模式概述 结构...

randy_shandong
2017/01/12
0
0
创建型、结构型、行为型模式(1)

目的 创建型模式 Creational Pattern 结构型模式 Structural Patterns 行为型模式 Behavioral Pattern 概念 创建型模式,就是创建对象的模式,抽象了实例化的过程。它帮助一个系统独立于如何...

晨曦之光
2012/04/24
241
0

没有更多内容

加载失败,请刷新页面

加载更多

Cesium中级4 - 空间数据可视化(二)

Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com/ Viewer中的Entity功能 让我们看看Viewer为操作entities提供出来的功能函数。 选中和描述 点击Viewer中的e...

Cesium中文网
31分钟前
1
0
Linux-CentOS7 安装VMware Workstation

Linux-CentOS7 安装VMware Workstation 太极之道关注0人评论1605人阅读2018-10-17 14:36:22 Linux-CentOS7 安装VMware Workstation 12 1、下载VMware 衔接地址 http://www.vmware.com/produc......

linjin200
34分钟前
2
0
centos7.5 部署flask+nginx+uwsgi+python3

centos7.5 部署flask+nginx+uwsgi+python3 ## uwsgi [uwsgi] master = true max-requests = 6000 processes = 6 threads = 6 chmod-socket = 664 thunder-lock = true buffer-size = 32768 #......

丁典
38分钟前
3
0
BigData NoSQL —— ApsaraDB HBase数据存储与分析平台概览

一、引言 时间到了2019年,数据库也发展到了一个新的拐点,有三个明显的趋势: 越来越多的数据库会做云原生(CloudNative),会不断利用新的硬件及云本身的优势打造CloudNative数据库,国内以阿...

阿里云官方博客
43分钟前
3
0
好代码是什么样的?

简评: 好代码是什么样的?相信不同的人会有不同的看法,正如「一千个读者,就有一千个哈姆雷特」,关键在于你有没有自己的标准。 这篇文章是我个人很喜欢的一家公司 - Atomic Spin 的 blog...

极光推送
43分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部