适配器模式(Adapter模式)

什么是适配器模式?

  将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。

适配器模式中的角色

  目标接口(Traget):客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。

  需要适配的类(Adaptee):需要适配的类或者适配者类。

  适配器:通过包装一个需要适配的对象,把原接口转换成目标接口。

首先创建Adaptee类,即需要被适配的对象:

  

package com.note.adapter;

/***
 * 被适配的类
 * (例子中的ps/2键盘)
 */
public class Adaptee {

	public void request() {
		System.out.println("可以完成客户请求的需要的功能!");
	}

}

  

创建Target接口,就是给客户端调用的接口:

package com.note.adapter;

public interface Target {

	void handleReq();

}

创建适配器类,负责将Adaptee适配到Target,起到了转换器的作用:

package com.note.adapter;

/**
 * adpater适配器
 * (相当于usb和ps/2的转换器)
 */
public class Adapter extends Adaptee implements Target {

	@Override
	public void handleReq() {
		super.request();
	}

}

客户端测试

package com.note.adapter;

/**
 *  客户端类
 * (相当于例子中的笔记本,只有USB接口)
 */
public class Client {

	public void test(Target t) {
		t.handleReq();
	}

	public static void main(String[] args) {
		Client c = new Client();
		c.test(new Adapter());
	}

}

但是上面这个版本的Adapter采用的是继承Adaptee的方式注入Adaptee,java中采用的是单继承,如果此时Adapter还需要继承其他类则没有办法了,不够灵活。 
下面采用的是对象组合的方式,将Adaptee注入到Adapter中,更为灵活,建议用下面的方法创建Adapter:

package com.note.adapter;

/**
 * adpater适配器
 * (相当于usb和ps/2的转换器)
 */
public class Adapter2 implements Target {

	private Adaptee mAdaptee;

	public Adapter2(Adaptee adaptee) {
		mAdaptee = adaptee;
	}

	@Override
	public void handleReq() {
		mAdaptee.request();
	}

}

适配器模式的使用场景:

  用来做旧系统的改造和升级; 
  转换流就是使用的适配器模式, 
  java.io.InputStreamReader 
  java.io.OutputStream

  

  

原文地址:https://www.cnblogs.com/zhaojianhua/p/8177568.html

时间: 2024-08-07 10:49:49

适配器模式(Adapter模式)的相关文章

菜鸟学设计模式系列笔记之适配器模式(adapter模式)

一.结构模式简介: 在面向对象软件系统中,每个类都承担了一定的职责,它们可以相互协作,实现一些复杂的功能 结构型模式关注的是如何将现有类或对象组织在一起形成更加强大的结构 不同的结构型模式从不同的角度来组合类和对象 1.结构模式描述如何将类或者对象结合在一起形成更大的结构 (1)类的结构模式:类的结构模式使用继承把类.接口等组合在一起,以形成更大的结构.当一个类从父类继承并实现某接口时,这个新的类就把父类的结构和接口的结构组合起来.类的结构模式是静态的. (2)对象的结构模式:对象的结构模式描述

设计模式之四:适配器模式(Adapter Pattern)

在软件系统中,由于应用环境的变化,常常需要将"一些现存的对象"放在新的环境中应用,但是新环境要求的接口是这些现存对象所不满足的.如果能既能利用现有对象的良好实现,同时又能满足新的应用环境所要求的接口?这就是适配器模式要解决的问题. 目的:将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 下面以日志记录程序为例子说明Adapter模式.假设我们在软件开发中要记录日志,包括数据库记录日志DatabaseLog和文本文件

适配器模式--Adapter Pattern

模拟场景:很多人都喜欢看NBA吧,姚明进驻NBA,打开了中国的市场.虽然后面姚明在NBA打得还不错,但是在刚进入NBA篮坛的时候,并不是那么顺利的.语言交流就是一个最大的问题.刚开始打球期间,教练及队员的战术部署姚明都无法理解,所以他需要这么一个翻译者,将教练及队员的意思转达给姚明,这样才可以进行合作. 现在进行场景的模拟,先不考虑那么多.假如姚明一开始进入NBA的时候就已经会英语,可以进行交流了.那么这个时候教练就可以进行战术的部署了. 转换成类,所有的队员都要服从教练的战术要求,假设现在教练

设计模式指六-Adapter模式

适配器模式,使用之处比较特殊,不属于常规设计模式,主要用于不同系统之间的处理.是将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 系统内部的实体接口 //IUserInfo.h// #pragma once #include <iostream> using std::string; class IUserInfo { public: IUserInfo(void) { } virtual ~IUserInfo(void)

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

适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作. 1. 解决的问题 即Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作. 2. 模式中的角色 2.1 目标接口(Target):客户所期待的接口.目标可以是具体的或抽象的类,也可以是接口. 2.2 需要适配的类(Adaptee):需要适配的类或适配者类. 2.3 适配器(Adapter):通过包装一个需要适配的对象,把

适配器模式(adapter)c#

适配器模式(adapter)c#简单例子 结合上回外观模式中的类,从外部引入mydll.dll类库中wemanplay类,其接口有属性stringMove . stringJump和行为wemanmove().wemanjump(),采用适配器变为自己类中通用接口. 在外观模式中增加一个新类适配器 public class addplay : play//由引类wemanplay类适配为现有play类 { private wemanplay wplay;//引个已编译好的wemanplay类 p

如何让孩子爱上设计模式 —— 7.适配器模式(Adapter Pattern)

如何让孩子爱上设计模式 -- 7.适配器模式(Adapter Pattern) 概念相关 定义: 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而 使原本因接口不匹配而无法在一起工作的两个类能够在一起工作. 简单点说: 两个彼此间没有太大关联的类,想进行交互完成某些事情,如果 直接去修改各自的接口,就显得有些繁琐了,可以加个中间类, 用它来协调两类之间的关系,完成相关业务.这种玩法就叫适配器模式! 两种适配器模式: 根据适配器类与适配者类的关系不同,适配器模式可分为 类适配器 和 对

打造炫酷通用的ViewPager指示器 - Adapter模式适配所有

1.概述 上一期我们已经写了一篇 打造炫酷通用的ViewPager指示器 - 玩转字体变色 可是这种效果虽然绚烂可以装装A和C之间,但是在实际的大多数效果中并不常见,只是在内涵段子中有这个效果而已,那么这一期我们就用Adapter适配器模式适配所有的效果,堪称终结者.附视频地址:等这个周末吧 2.效果实现 2.1 整合上一个实例: 我还是还是拿上一个实例来做演示吧.这里我贴几种常见的效果,首先声明Android自带的有这个控件叫TabLayout,大家可以自己用用试试看好用不?我也用过但是不做任

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

1. 概述: 接口的改变,是一个需要程序员们必须(虽然很不情愿)接受和处理的普遍问题.程序提供者们修改他们的代码;系统库被修正;各种程序语言以及相关库的发展和进化.  例子1:iphone4,你即可以使用UBS接口连接电脑来充电,假如只有iphone没有电脑,怎么办呢?苹果提供了iphone电源适配器.可以使用这个电源适配器充电.这个iphone的电源适配器就是类似我们说的适配器模式.(电源适配器就是把电源变成需要的电压,也就是适配器的作用是使得一个东西适合另外一个东西.)  例子2:最典型的例