美文网首页
适配器模式

适配器模式

作者: NullPointers | 来源:发表于2017-09-12 10:05 被阅读0次
定义

将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。

注:在适配器模式定义中所提及的接口是指广义的接口,它可以表示一个方法或者方法的集合。根据适配器类与适配者类的关系不同,适配器模式可分为对象 适配器和类适配器两种,在对象适配器模式中,适配器与适配者之间是关联关系;在类适配 器模式中,适配器与适配者之间是继承(或实现)关系。

对象适配器

本质

将适配者应用到目标类上,使得目标类具有适配者的功能。适配器和适配者是关联关系

UML类图
image.png
角色和职能

Target(目标抽象类):定义客户所需接口,可以是一个抽象类或接口,也可以是具体类。
Adapter(适配器类):可以调用另一个接口,作为一个转换器,对Adaptee和Target进行适配,适配器类是适配器模式的核心,通过集成Target并关联一个Adaptee对象使二者关联起来。
Adaptee(适配者类):适配者即被适配的角色,它定义了一个已经存在的接口,这个接口 需要适配,适配者类一般是一个具体类,包含了客户希望使用的业务方法,在某些情况下可 能没有适配者类的源代码。

类适配器

本质

将适配者应用到目标类上,使得目标类具有适配者的功能。适配器和适配者是继承关系

UML类图
image.png
角色和职能

同上

JDK中的使用
InputStreamReader

该类继承自Reader类,并关联StreamDecoder类。所表达的含义是:通过适配者StreamDecoder类提供的功能,来适配目标类Reader中不存在的功能。并提供新类InputStreamReader提供服务。

使用场景
  • 系统需要使用一些现有的类,而这些类的接口(如方法名)不符合系统的需要,甚至没有这些类的源代码。
  • 想创建一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作。
练习

Sunny软件公司OA系统需要提供一个加密模块,将用户机密信息(如口令、邮箱等)加 密之后再存储在数据库中,系统已经定义好了数据库操作类。为了提高开发效率,现需 要重用已有的加密算法,这些算法封装在一些由第三方提供的类中,有些甚至没有源代 码。试使用适配器模式设计该加密模块,实现在不修改现有类的基础上重用第三方加密 方法。

目标类
public class TargetDao {
    protected void add(String user,String password){

    }
    protected void delete(String user){

    }
    protected void update(String user,String password){

    }
    protected String get(String user){
        return "";
    }
}
适配者类
public class EncoderAdaptee {
    public String encode(String content){
        return "加密后的信息";
    }
}
适配器类
public class DaoEncoderAdapter extends TargetDao{
    private EncoderAdaptee encoder;

    @Override
    protected void add(String user, String password) {
        password = encoder.encode(password);
        super.add(user, password);
    }

    @Override
    protected void update(String user, String password) {
        password = encoder.encode(password);
        super.update(user, password);
    }
}

相关文章

  • Java设计模式(二)

    talk is cheap show me the code 适配器模式 类适配器模式 接口适配器模式 对象适配器...

  • 适配器模式

    目录 1、什么是适配器模式? 2、适配器模式结构? 3、如何实现适配器模式? 4、适配器模式的特点? 5、适配器模...

  • 设计模式之适配器模式

    适配器模式: 类适配器模式、对象适配器模式、接口适配器模式 1.类适配器模式:新的接口出现了,但是和老的接口不兼容...

  • 学习iOS设计模式第一章 适配器(Adapter)

    今天学习了iOS设计模式中的适配器模式,适配器有两种模式对象适配器模式-- 在这种适配器模式中,适配器容纳一个它包...

  • 第4章 结构型模式-适配器模式

    一、适配器模式简介 二、适配器模式的优点 三、适配器模式的实例

  • 设计模式(Design Patterns)适配器模式(Adapt

    适配器模式主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式。 类的适配器模式 场景:将一个类转换成...

  • 适配器模式

    适配器模式主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式。适配器模式将某个类的接口转换成客户端期...

  • 适配器模式

    先直观感受下什么叫适配器 适配器模式有类的适配器模式和对象的适配器模式两种不同的形式。 类适配器模式 对象适配器模...

  • 适配器模式

    适配器模式 一、适配器模式定义 适配器模式的定义是,Convert the interface of a clas...

  • 设计模式:结构型

    享元模式 (Pools,Message) 代理模式 适配器模式 :类适配器和对象适配器 装饰者模式 外观模式 桥接...

网友评论

      本文标题:适配器模式

      本文链接:https://www.haomeiwen.com/subject/wbqqsxtx.html