`
longrui
  • 浏览: 10124 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多

定义:

将一个类的接口转换成客户端期望的另一个接口。适配器模式可以消除由于接口不匹配所造成的类兼容性问题。

 

简单的讲就是客户期望调用我们已存的代码功能,但客户已经定义好了自己的接口标准,为了使我们已有的代码能适用客户的接口,所以需要用到适配器模式。

 

该模式定义的角色有一下三种:

  • Target:使用者所期待得到的接口
  • Adaptee:具体调用类中的方法
  • Adapter:将原有接口转换成Target所描述的接口

适配器模式主要以两种方式实现:

  • 类适配模式
  • 对象适配器模式

 

举个生活中常见的例子: 为手机充电。

手机需要电但无法直接从电源上获得(这里忽略带交流电源的山寨手机),所以有了充电器这个适配器,来适配手机与电源的接口,从而能正常充电。

 

1.类适配器

Target(手机充电接口):

public interface Target {
	public void electricize();
}
 

Adaptee(电源):

public class Adaptee {
	public void getElectricity() {
		System.out.println("获取电流......");
	}
}

 Adapter(适配器):

public class AdapterClass extends Adaptee implements Target{
	public void electricize() {
		this.getElectricity();
	}
}

 Test:

public class Test {
	public static void main(String args[]) {
		AdapterClass adapterClass = new AdapterClass();
		adapterClass.electricize();
	}
}

 2.对象适配器

更换Adapter代码为以下:

public class AdapterObject implements Target{
	
	private Adaptee adaptee;
	
	public AdapterObject(Adaptee adaptee) {
		this.adaptee = adaptee;
	}
	
	public void electricize() {
		adaptee.getElectricity();
	}
}

 Test:

public class Test {
	public static void main(String args[]) {
		AdapterObject adapterObject = new AdapterObject(new Adaptee());
		adapterObject.electricize();
	}
}

 

类适配器与对象适配器:

整体看类适配器是基于集成的概念,而对象适配器更类似于一种组合的概念。

 

对象适配器的一些应用场景:

当客户无法给出明确接口或客户提出的接口为抽象类时。

客户接口:

public abstract class AbstractTarget {
	abstract public void electricize();
}

 适配器:

public class AdapterObject extends AbstractTarget {

	private Adaptee adaptee;

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

	@Override
	public void electricize() {
		adaptee.getElectricity();
	}

}
 

 

分享到:
评论

相关推荐

    c++设计模式-结构型模式-适配器模式

    c++设计模式-结构型模式-适配器模式,其他工程,c++源码。适配器模式(Adapter)的定义如下:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。

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

    在这里与各位分享本人从网络上下载的C#面向对象设计模式纵横谈系列视频,共有25节,除了第一节需要各位贡献一点资源分以作为对本人上传资源的回馈,后面的其他资源均不需要... 这是第7节:结构型模式Adapter 适配器模式

    设计模式结构型-适配器

    **适配器模式**(Adapter Pattern)属于结构型设计模式,它的目的是将一个接口转换成客户希望的另一个接口,从而使得原本由于接口不兼容而无法一起工作的那些类能够合作。适配器模式有两种形式:类适配器模式和对象...

    java常用设计模式-适配器模式

    适配器模式(Adapter Pattern)是一种结构型设计模式,它允许不兼容的接口之间进行通信。这种模式可以在不修改现有代码的情况下重用现有类,并且可以使不兼容的接口之间进行通信。 适配器模式的定义 适配器模式是...

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

    适配器模式是一种在软件设计中广泛使用的结构型设计模式,它允许两个不兼容的接口之间进行通信。在C#编程环境中,适配器模式扮演着重要的角色,尤其是在需要将已有类库或组件与新系统集成时。适配器模式通过创建一个...

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

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

    [结构型模式] 适配器模式的理解

    适配器模式是一种结构型设计模式,它允许不兼容的接口之间进行通信,通过创建一个适配器对象作为中间桥梁,使得原本不匹配的接口能够协同工作。在软件开发中,适配器模式的应用十分广泛,尤其是在处理遗留系统或者...

    Python 程序语言设计模式思路-结构型模式:适配器模式-将不兼容的接口转换为可兼容的接口

    适配器模式(Adapter Pattern)是一种结构型设计模式,旨在将一个类的接口转换为客户端期望的另一个接口,从而使原本由于接口不兼容而无法一起工作的类能够协同工作。适配器模式通过引入一个适配器类,解决了接口不...

    PHP5设计模式-适配器模式实现

    适配器模式是一种结构型设计模式,它的主要目的是使不兼容的接口能够协同工作。在实际开发中,我们可能会遇到这样的情况:一个类库或者服务提供了一个接口,而我们的代码需要使用另一个接口。适配器模式就充当了两者...

    结构型模式之适配器模式

    适配器模式是一种在软件设计中广泛使用的结构型设计模式,它的主要目的是解决不同系统、类库或组件之间的接口不兼容问题,使原本无法协同工作的模块能够顺利地一起工作。适配器模式的核心思想是“转换”,通过创建一...

    PHP设计模式(五)适配器模式Adapter实例详解【结构型】

    适配器模式(Adapter Pattern)是一种结构型设计模式,它主要解决的是接口不兼容的问题,使得原本由于接口差异无法一起工作的类能够协同工作。在PHP中,适配器模式通过创建一个包装类(适配器类)来转换不兼容的接口...

    设计模式 - 适配器

    适配器模式(Adapter Pattern)是一种结构型设计模式,它允许两个不兼容的接口之间进行通信。在实际应用中,我们常常遇到这样的情况:一个系统需要使用现有的类,但其接口与系统的需求不匹配。适配器模式能解决这种...

    适配器模式(Adapter Pattern)原理图

    适配器模式是一种结构型设计模式,它允许接口不兼容的两个类可以协同工作。以下是该模式的要点: 1. **角色**: - **Target(目标接口)**:客户端期望调用的接口。 - **Adaptee(适配者)**:现有的、接口与目标...

    java设计模式之适配器模式

    适配器模式是一种在软件工程中广泛使用的结构型设计模式,它允许两个不兼容的接口之间进行通信。在Java中,适配器模式扮演着重要的角色,尤其在处理遗留代码或者第三方库集成时,能够有效地解决接口不匹配的问题。...

    设计模式实验报告-适配器模式.docx

    适配器模式(Adapter Pattern)是一种结构型设计模式,其主要目的是将一个类的接口变换成客户端所期待的另一种接口。通过这种方式,原本由于接口不兼容而无法一起工作的类可以顺利合作。适配器模式有两种实现方式:...

    c++-设计模式之适配器模式(Adapter Pattern)

    适配器模式(Adapter Pattern)是一种结构型设计模式,它允许将一个接口转换为客户端期望的另一个接口。适配器模式常用于解决由于接口不兼容而无法正常工作的类之间的协作问题。 适配器模式的组成 目标接口(Target...

    讲故事,学(Java)设计模式-适配器模式Java开发Ja

    适配器模式是一种结构型设计模式,它的主要目的是使不兼容的接口之间能够进行通信。在这个“讲故事,学(Java)设计模式—适配器模式”的主题中,我们将深入探讨这个模式的原理、应用和优势。 适配器模式的核心思想...

    前端项目-ember-data-django-rest-adapter.zip

    "ember-data-django-rest-adapter"是项目的名称,表明它是Ember.js应用中的一个适配器组件,目的是使Ember Data能够无缝地与Django RESTful API进行通信。 **描述解析:** "前端项目-ember-data-django-rest-...

Global site tag (gtag.js) - Google Analytics