设计模式-结构型- 适配器模式(Adapter)

原创 2016年08月28日 21:38:48

定义

将一个类的接口转换成客户希望的另一个接口

角色

目标接口(Target):定义客户端使用的与特定领域相关的接口

需要适配的类(Adaptee):定义一个已经存在的接口,这个接口需要适配

适配器(Adapter):对Adaptee的接口与Target接口进行适配

优点

  • 客户端可以调用同一接口,因而对客户端来说是透明的, 这样做更简单、更直接、更紧凑
  • 复用了现存的类
  • 通过引入一个适配器重用现有的Adaptee类,将目标类与Adaptee类解耦

缺点

  • 更换适配器的实现过程比较复杂

适用场景

  • 想使用一个已经存在的类, 但它的接口不符合你的需求
  • 想创建一个可以复用的类,该类可以与其它不相关的类协同工作
  • 两个类所做的事情相似,但是具有不同接口时

类图

Adapter

package com.vapy.structure.Adapter;
/**
 *
 * @author vapy 2016年8月28日
 *
 */
public interface Target {
    void adapteeMethod();

    void adapterMethod();
}
package com.vapy.structure.Adapter;
/**
 *
 * @author vapy 2016年8月28日
 *
 */
public class Adaptee {
    public void adapteeMethod() {
        System.out.println("Adaptee method");
    }
}
package com.vapy.structure.Adapter;
/**
 *
 * @author vapy 2016年8月28日
 *
 */
public class Adapter implements Target {
    private Adaptee adaptee;

    public Adapter(Adaptee adaptee) {
        this.adaptee = adaptee;
    }

    @Override
    public void adapteeMethod() {
        adaptee.adapteeMethod();
    }

    @Override
    public void adapterMethod() {
        System.out.println("Adapter method");
    }

}
package com.vapy.structure.Adapter;
/**
 *
 * @author vapy 2016年8月28日
 *
 */
public class Client {
    public static void main(String[] args) {
        Target target = new Adapter(new Adaptee());
        target.adapteeMethod();
        target.adapterMethod();
    }
}

AdapterResult
本文代码可在github查看:点击此处

版权声明:开源共享,欢迎转载

Java设计模式菜鸟系列(八)适配器模式建模与实现

适配器模式(Adapter):将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题。 主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式。 1...
  • JAVE_LOVER
  • JAVE_LOVER
  • 2014年10月05日 19:52
  • 2335

设计模式总结之Adapter Pattern(适配器模式)

Adapter Pattern(适配器模式) 意图 将一个类的接口转换成另外一个客户希望的接口。Adapter 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 注:适配器模式在详细设...
  • cooldragon
  • cooldragon
  • 2016年08月11日 00:48
  • 1458

设计模式:适配器模式(Adapter)

适配器模式:将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的哪些类可以一起工作。  适配器模式有类适配器模式和对象适配器模式两种不同的形式。 类适配器 ...
  • u013256816
  • u013256816
  • 2016年03月28日 18:56
  • 3022

C#面向对象设计模式纵横谈(7):Adapter 适配器模式(结构型模式) (Level 300)

  • 2008年09月13日 15:54
  • 7.2MB
  • 下载

C#面向对象设计模式纵横谈\7 结构型模式Adapter 适配器模式.zip

  • 2009年12月20日 12:52
  • 8.61MB
  • 下载

跟着实例学习设计模式(8)-适配器模式adapter(结构型)

适配器模式属于结构型设计模式 设计意图:将一个类的接口转换成客户希望的另外一个接口。A d a p t e r模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 该模式正如名字一样适配器,...
  • andy_gx
  • andy_gx
  • 2015年07月13日 20:19
  • 510

设计模式 (10)——适配器模式(Adapter Pattern,结构型)

1.概述使用设计模式可以提高代码的可复用性、可扩充性和可维护性。适配器模式(Adapter Pattern)属结构性模式,将一个类的接口转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无...
  • K346K346
  • K346K346
  • 2017年03月05日 15:03
  • 695

设计模式之九:Adapter(适配器)—类对象结构型模式

22:01:24 星期一 22:01:37  Adapter,继续GOF。设计模式之九:Adapter(适配器)—类对象结构型模式 1、Intent Convert the interfa...
  • angelzyb
  • angelzyb
  • 2014年04月01日 20:39
  • 522

设计模式(五)适配器模式Adapter(结构型)

设计模式(五)适配器模式Adapter(结构型) 1. 概述:          接口的改变,是一个需要程序员们必须(虽然很不情愿)接受和处理的普遍问题。程序提供者们修改他们的代码;系统库...
  • hguisu
  • hguisu
  • 2012年05月02日 16:02
  • 54389

Java设计模式之适配器模式Adapter(结构型)

第一次见到适配器模式的时候,很佩服为设计模式命名的人,因为他们真的很符合这个名字,做到了见名知意; 概述: 在我们的开发中业务会经常的变化,接口也会做出相应的改变,而这些又是我们不得不去面对的事情...
  • liaodehong
  • liaodehong
  • 2016年06月05日 18:36
  • 490
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:设计模式-结构型- 适配器模式(Adapter)
举报原因:
原因补充:

(最多只允许输入30个字)