设计模式-结构型- 适配器模式(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查看:点击此处

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

相关文章推荐

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

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

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

22:01:24 星期一 22:01:37  Adapter,继续GOF。设计模式之九:Adapter(适配器)—类对象结构型模式 1、Intent Convert the interfa...

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

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

23种设计模式(6)_结构型_适配器模式(Adapter Pattern)

适配器模式——把一个类的接口变换成客户端所期待的另一种接口,从而使原本接口不匹配而无法一起工作的两个类能够在一起工作。适配器模式有类的适配器模式和对象的适配器模式两种形式,下面我们分别讨论这两种形式的...

设计模式(6)-结构型-适配器模式(Adapter)(个人笔记)

概述 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。  适用性 1.你想使用一个已经存在的类,而它的接口不符合你的...
  • iihero
  • iihero
  • 2012年04月28日 11:47
  • 1883

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

概述 在软件系统中,由于应用环境的变化,常常需要将“一些现存的对象”放在新的环境中应用,但是新环境要求的接口是这些现存对象所不满足的。那么如何应对这种“迁移的变化”?如何既能利用现有对象的良好实现,同...

"围观"设计模式(11)--结构型之适配器模式(Adapter Pattern)

在设计模式中,适配器模式(英语:adapter pattern)有时候也称包装样式或者包装(wrapper)。将一个类的接口转接成用户所期待的。一个适配使得因接口不兼容而不能在一起工作的类工作在一起,...

面向对象设计模式之Adapter适配器模式(结构型)

动机:在软件系统中,由于应用环境的变化,常常需要将“一些现存的对象”放在新的环境中应用,但是新环境要求的接口使这些现存对象所不满足的。如何应对这种“迁移的变化”?如何即能利用现有对象的良好实现,同时又...
  • yja886
  • yja886
  • 2012年02月24日 10:26
  • 468
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:设计模式-结构型- 适配器模式(Adapter)
举报原因:
原因补充:

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