博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Adapter(适配器)模式
阅读量:2393 次
发布时间:2019-05-10

本文共 1315 字,大约阅读时间需要 4 分钟。

Adapter 模式是一个常用的模式,它可以与其他很多模式共同使用

Adapter模式的意图是 将一个类的接口转换成希望的另外一种接口,Adapter模式使原本由接口不兼容而不能一起工作的那一些类可以起工作,就是说 需要一种方法,为一个内容合适但接口不配的对象创建一个新的接口,这样把一个类的接口转换成客户端所期待的另一个接口,从而使原接口不匹配而无法在一起工作的两个类能在一起工作
意图:将一个无法控制的现有对象与一个特定的接口相匹配
问题:一个系统拥有正确的数据行为,但接口却是错误的,典型用途:必须把某些东西实现为定义或已经拥有的抽象类的派生类
角色:目标(定义一个客户端使用特定接口)、客户(使用目标接口与和目标接口一致的对象合作)、被适配者(一个现存需要匹配的接口)、适配器(负责将接口转换成目标)
解决方案:Adapter模式用需要的接口对无法修改的类进行包装
参与者与协作者:Adapter 对 Adaptee 的接口进行适配,使它与Target(Adapter派生自它)相匹配。让 Client 把 Adaptee 当作 Target 的一个类型来使用它
效果:Adapter 模式让现存的对象适应新的结构,而不受接口的限制
实现:将现存的类包含在另一个类之中。包容类与需要的接口相匹配,并调用被包容类的方法

许多模式都要求某些特定的派生自同一个类,如果已经有现存的类,可以用 Adapter模式将它与适当的抽象类相适配

Adapter模式有两种用类型:
1> 对象 Adapter 模式:使用 Adapter模式叫做对象Adapter模式,因为它依赖于一个对象(适配对象)包含另一个对象(被适配对象)
2> 类 Adapter 模式:实现 Adapter模式的另一种方法是使用多重继承,在这种情况下,它被称为类 Adapter模式

Facade模式 与 Adapter模式的比较
Adapter模式将接口转换成另一个现有的接口
如,示例代码:
public interface XmlReader {
    public InputStream xmlReader();
}
public interface ReaderXml {
    public InputStream readerXml();
}
public class B implements ReaderXml {
    @Override
    public InputStream readerXml() {
        return null ;
    }
}
public class Adapter1 extends B implements XmlReader {
    @Override
    public InputStream xmlReader() {
        return readerXml();
    }
}
public class Adapter2 implements XmlReader {
    ReaderXml b = new B();
    @Override
    public InputStream xmlReader() {
        return b .readerXml();
    }
}
你可能感兴趣的文章
Tensorflow-Python-API-翻译(math_ops)(第一部分)
查看>>
Tensorflow-Python-API-翻译(nn)
查看>>
Tensorflow-Python-API-翻译(sparse_ops)
查看>>
论文阅读---An-Artificial-Neural-Network-based-Stock-Trading-System-Using-T
查看>>
A-Paper-A-Day--#1-Convolutional-Sequence-to-Sequence-Learning
查看>>
7个很棒的-chatbot-应用场景
查看>>
标记问题:词性标注(POS)和命名实体识别(NER)
查看>>
标记问题:介绍
查看>>
标记问题:生成模型和噪声通道模型
查看>>
机器学习算法在文本分类中的应用综述
查看>>
利用-TensorFlow-构建卷积神经网络
查看>>
利用-TensorFlow-实现排序和搜索算法
查看>>
利用TensorFlow实现卷积神经网络做文本分类
查看>>
如何构建高可读性和高可重用的-TensorFlow-模型
查看>>
使用TensorFlow识别交通标志
查看>>
122. Best Time to Buy and Sell Stock II [medium] (Python)
查看>>
推荐-线下AUC提升,线上CTR无提升
查看>>
Ubuntu 安装 pylucene 踩坑还原记,并安装 SmartChineseAnalyzer
查看>>
Java编程思想学习笔记(10)
查看>>
Java编程思想学习笔记(11)
查看>>