适配器模式

8、【设计模式】适配器模式

感情迁移 提交于 2020-02-10 03:59:00
  适配器就是一种适配中间件,它存在于不匹配的二者之间,用于连接二者,将不匹配变得匹配,简单点理解就是平常所见的转接头,转换器之类的存在。   适配器模式有两种:类适配器、对象适配器、接口适配器   前二者在实现上有些许区别,作用一样,第三个接口适配器差别较大。 1、类适配器模式:   原理:通过继承来实现适配器功能。   当我们要访问的接口A中没有我们想要的方法 ,却在另一个接口B中发现了合适的方法,我们又不能改变访问接口A,在这种情况下,我们可以定义一个适配器p来进行中转,这个适配器p要实现我们访问的接口A,这样我们就能继续访问当前接口A中的方法(虽然它目前不是我们的菜),然后再继承接口B的实现类BB,这样我们可以在适配器P中访问接口B的方法了,这时我们在适配器P中的接口A方法中直接引用BB中的合适方法,这样就完成了一个简单的类适配器。   详见下方实例:我们以ps2与usb的转接为例 ps2接口:Ps2 1 public interface Ps2 { 2 void isPs2(); 3 } USB接口:Usb 1 public interface Usb { 2 void isUsb(); 3 } USB接口实现类:Usber 1 public class Usber implements Usb { 2 3 @Override 4 public void isUsb()

结构模式 - 4 适配器模式

南楼画角 提交于 2020-02-10 03:57:40
出处地址 http://www.cnblogs.com/V1haoge/p/6479118.html   适配器就是一种适配中间件,它存在于不匹配的二者之间,用于连接二者,将不匹配变得匹配,简单点理解就是平常所见的转接头,转换器之类的存在。   适配器模式有三种:类适配器、对象适配器、接口适配器   前二者在实现上有些许区别,作用一样,第三个接口适配器差别较大,并不常使用。 问题:适配器模式和代理模式有什么区别?   首先,代理类和被代理类要实现相同接口,其次,代理类可以对被代理类的方法做些新的包装,而适配器只是做接口的转换,比如参数转换 适配器模式解决的问题: (1)从使用者角度来说,功能满足要求,接口不满足规范 已知2个接口,A,B,已有B的实现BI,可是想要AI,而且用B的功能,那么可以继承BI并实现A,在类中A.function中调用BI的方法 或者A中定义一个B的成员变量,然后 (2)接口方法太多,用适配器做一层(抽象类),然后继承抽象类,重写所需要的方法 适配器模式有两种实现方式,一种是通过继承,一种是通过组合,推荐使用组合的方式 1、类适配器模式:   原理:通过继承来实现适配器功能。   当我们要访问的接口A中没有我们想要的方法 ,却在另一个接口B中发现了合适的方法,我们又不能改变访问接口A,在这种情况下,我们可以定义一个适配器p来进行中转

Android必学之数据适配器BaseAdapter

戏子无情 提交于 2020-02-10 03:41:12
.什么是数据适配器? 下图展示了数据源、适配器、ListView等数据展示控件之间的关系。我们知道,数据源是各种各样的,而ListView所展示数据的格式则是有一定的要求的。数据适配器正是建立了数据源与ListView之间的适配关系,将数据源转换为ListView能够显示的数据格式,从而将数据的来源与数据的显示进行解耦,降低程序的耦合性。这也体现了Android的适配器模式的使用。对于ListView、GridView等数据展示控件有多种数据适配器,本文讲解最通用的数据适配器——BaseAdapter。 .ListView的显示与缓存机制 我们知道,ListView、GridView等控件可以展示大量的数据信息。假如下图中的ListView可以展示100条信息,但是屏幕的尺寸是有限的,一屏幕只能显示下图中的7条。当向上滑动ListView的时候,item1被滑出了屏幕区域,那么系统就会将item1回收到Recycler中,即View缓冲池中,而将要显示的item8则会从缓存池中取出布局文件,并重新设置好item8需要显示的数据,并放入需要显示的位置。这就是ListView的缓冲机制,总结起来就是一句话:需要时才显示,显示完就被会收到缓存。ListView,GridView等数据显示控件通过这种缓存机制可以极大的节省系统资源。 .BaseAdapter

适配器模式应用——电源适配器

此生再无相见时 提交于 2020-02-10 03:37:54
一模式定义 存在两种适配器模式 1 对象适配器模式,在这种适配器模式中,适配器容纳一个它包裹的类对象的物理实体。 2 类适配器模式,在这种适配器模式中,适配器继承自已实现的类。 二模式举例 1模式分析 我们借用笔计本电源适配器来说明这一模式。 已经存在的交流电源 笔记本电脑 电源适配器 2适配器模式的静态建模 3代码举例 3.1抽象电源建立 package com.demo.power; /** * 电源基类 * * @author * */ public abstract class AbsBasePower { // 电压值 private float power; // 单位 private String unit = "V"; // 构造方法 public AbsBasePower(float power) { this.power = power; } public float getPower() { return power; } public void setPower(float power) { this.power = power; } public String getUnit() { return unit; } public void setUnit(String unit) { this.unit = unit; } } 3.2 220v电源接口

设计模式 之 连接器

笑着哭i 提交于 2020-02-10 03:29:18
适配器型号(Adapter) 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本因为接口不兼容而不能一起工作的那些类能够一起工作。 在我们生活中存在非常多适配器的样例。如插座转换器、笔记本电脑电源适配器等。 今天,我们就来看一下嘴熟悉的笔记本电源适配器的样例。通常。笔记本电脑须要的电流都是12-20V以内的直流电流,而我们家庭用电一般是220V的交流电,当然还有工业用电380V交流电,还有更低的110V交流电源。 怎样把这些不同的交流电源转换成笔记本电脑须要的直流电呢?这就须要电源适配器。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 适配器 { //电源基类 public class BasePower { //电压值 private float power; //单位 private string unit = "V"; //构造方法 public BasePower(float power) { this.power = power; } public float Power { get { return power; } set { power =

适配器模式

纵饮孤独 提交于 2020-02-10 03:27:39
设计模式 适配器模式   适配器模式(Adapter Pattern)是把一个类的接口变换成客户端所期待的另一种接口, 从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作, 又称为转换器模式, 变压器模式, 包装(Wrapper)模式(把已有的一些类包装起来, 使之有能满足需要的接口). 适配器共分两种适模式. 无论哪种适配器, 它的宗旨都是保留现有类所提供的服务, 向客户提供接口, 以满足客户的期望. 即在不改变原有系统的基础上, 提供新的接口服务. 对象适配器模式---在这种适配器模式中, 适配器容纳一个它包裹的类的实例. 在这种情况下, 适配器调用被包裹对象的物理实体. 类适配器模式---在这种适配器模式下, 适配器继承自己实现的类. 设计原则 在适配器设计模式中, 使用对象组合的方式, 以目标接口包装被适配者, 这样使得被适配者的任何子类都可以被适配器使用. 适配器模式将被适配者和目标接口绑定在一起, 而不是和实现进行绑定, 这样更利于系统的升级和扩展. 适配器设计模式体现了"开-闭"原则. 在原有系统结构的基础上, 使用适配器将原有接口转换成另外一种接口, 既不影响原有系统的稳定运行, 又能有效地扩展新功能, 使得软件系统结构具有很强的健壮性. 另外, 就算没有源程序也没问题, 适配器模式可以让已经建立好的类符合新建的接口标准, 而不必修改原有的类. Java

设计模式之适配器模式

纵然是瞬间 提交于 2020-02-10 03:22:37
设计模式之--适配器模式 1,定义:将一个类的接口转换成客户希望的另外一个接口; 2,分类: 对象适配器模式:不是通过继承方式,而是通过对象组合方式来进行处理; 类适配器模式:通过继承的方法实现,将旧系统的方法进行封装。对象适配器在进行适配器之间的转换过程时,无疑使用类适配器也能完成,但是依赖性会变大,并且根据适配的要求的灵活性,可能通过继承系统会膨胀到难以控制; 3,适用情况: 1):当想要使用一个已经存在的类,但是该类的接口不符合现有的需求时; 2):当需要创建一个可以被复用的子类,该类能够与其他无关的类甚至无法预见的类协同工作时; 3):当需要使用一些已经存在的子类,但是不可能对所有的子类都进行子类化以匹配他们的我接口时,对象适配器可以对其父类接口进行适配; 4,代码: 1),基本实现代码: 主类:Main.class: public class Main {   public static void main(String[] args) {      Target target = new Target();      target.Request();      target = new Adapter();      target.Request();   } } 客户希望的接口类:Target.class: public class Target {  

php 设计模式之适配器模式

会有一股神秘感。 提交于 2020-02-10 03:15:58
一、意图 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原来由于接口不兼容而不能一起工作的那此类可以一起工作 二、适配器模式结构图 三、适配器模式中主要角色 目标(Target)角色:定义客户端使用的与特定领域相关的接口,这也就是我们所期待得到的 源(Adaptee)角色:需要进行适配的接口 适配器(Adapter)角色:对Adaptee的接口与Target接口进行适配;适配器是本模式的核心,适配器把源接口转换成目标接口,此角色为具体类 四、适配器模式适用场景 1、你想使用一个已经存在的类,而它的接口不符合你的需求 2、你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类协同工作 3、你想使用一个已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口。对象适配器可以适配它的父类接口(仅限于对象适配器) 五、类适配器模式与对象适配器 类适配器: Adapter与Adaptee是继承关系 1、用一个具体的Adapter类和Target进行匹配。结果是当我们想要一个匹配一个类以及所有它的子类时,类Adapter将不能胜任工作 2、使得Adapter可以重定义Adaptee的部分行为,因为Adapter是Adaptee的一个子集 3、仅仅引入一个对象,并不需要额外的指针以间接取得adaptee 对象适配器: Adapter与Adaptee是委托关系

7.Adapter-适配器模式

血红的双手。 提交于 2020-02-10 03:14:42
Adapter 适配器模式 适配器: 也称包装样式或者包装(wrapper)。将一个类的接口转接成用户所期待的。 一个适配使得因接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。 主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式。 类适配器 是通过类的继承实现的适配; 对象适配器 是通过对象间的关联关系,组合关系实现的适配; 接口适配器 用一个抽象类实现该接口所有方法,在继承该抽象类重写想要的方法。 适配器模式说明 Target 目标角色 该角色定义把其他类转换为何种接口,也就是我们的期望接 口。 Adaptee 源角色 你想把“谁”转换成目标角色,这个“谁”就是源角色,它是已经存 在的、运行良好的类或对象。 Adapter 适配器角色 适配器模式的核心角色,其他两个角色都是已经存在的角 色,而适配器角色是需要新建立的,他的职责非常简单:把源角色转换为目标 角色。 适配器模式优点 适配器模式可以让两个没有任何关系的类在一起运行,只要适配器这个角色能 够搞定他们就成。 增加了类的透明性。我们访问的是目标角色,但是实现却在源角色里。 提高了类的复用度。源角色在原有系统中还是可以正常使用的。 灵活性非常好。不想要适配器时,删掉这个适配器就好了,其他代码不用改。 类适配器示例类图: 类适配器示例代码: //Target 目标接口

设计者模式详解--适配器模式

懵懂的女人 提交于 2020-02-10 03:13:40
1. 概述   将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。 2. 解决的问题   即Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。 3. 模式中的角色   3.1 目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。   3.2 需要适配的类(Adaptee):需要适配的类或适配者类。   3.3 适配器(Adapter):通过包装一个需要适配的对象,把原接口转换成目标接口。   4. 模式解读   注:在GoF的设计模式中,对适配器模式讲了两种类型, 类适配器模式 和 对象适配器模式 。由于类适配器模式通过多重继承对一个接口与另一个接口进行匹配,而C#、java等语言都不支持多重继承,因而这里只是介绍对象适配器。   4.1 适配器模式的类图      4.2 适配器模式的代码实现 /// <summary> /// 定义客户端期待的接口 /// </summary> public class Target { /// <summary> /// 使用virtual修饰以便子类可以重写 /// </summary> public virtual void Request() { Console.WriteLine("This is a