适配器模式(Adapter)

  

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

适配器模式结构图

本模式要解决的问题:

    需要的东西就在面前,但却不能使用,而短时间又无法改造它,于是就要想办法适配它。

    也就是系统的数据和行为都正确,但接口不符时,我们应该考虑用适配器,目的是使控制范围之外的一个原有对象与某个接口匹配。适配器模式主要应用于希望复用一些现存的类,但是接口又与复用环境不一致的情况。

注意:

     1,在使用时,首先不应先考虑适配器模式,而是应该考虑通过重构统一接口。

     2,对于接口不一致的情况,要能够事前控制,不要等到问题发生了,再去解决它。

适配器模式示例

     有时在玩儿平板或手机的时候,需要从U盘里面读取数据,但是,you know, pad设备的接口都是MicroUSB或是miniUSB,根本无法直接插U盘,all right,既然无法直接插U盘,那就间接插吧。此时,我们只需一根OTG线,一线搞定。

  这下不仅可以在手机上插U盘了,键盘鼠标什么的也可以接上来,完全无压力。嘿嘿,用键盘发短信就是好玩儿啊。。。

    下面,看一下OTG线做适配器,连接手机,然后读取U盘数据的代码:

  

namespace 适配器示例
{
    class USB   //USB接口
    {
        public virtual void IOData()  //input/output  data
        {
            Console.WriteLine("正在用U盘传输数据。。。");
        }

    }

    class PhoneMicroUSB  //手机充电,传输数据的接口
    {
        public void transportData()
        {
            Console.WriteLine("正在用手机传输数据。。。");
        }
    }

    class OTG:USB    //OTG线,用来连接手机和U盘
    {
        private PhoneMicroUSB pmUSB = new PhoneMicroUSB();

        public override void IOData()
        {
            pmUSB.transportData();

        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            //将OTG线连接在手机上,此时对U盘开发的就是适合U盘的USB接口
            USB usb = new OTG();
            usb.IOData();

        }
    }
}

  真心感觉适配器是个好东西啊。。

时间: 2024-08-04 07:37:36

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

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

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

乐在其中设计模式(C#) - 适配器模式(Adapter Pattern)

原文:乐在其中设计模式(C#) - 适配器模式(Adapter Pattern)[索引页][源码下载] 乐在其中设计模式(C#) - 适配器模式(Adapter Pattern) 作者:webabcd 介绍 将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 示例 有一个Message实体类,某个类对它的操作有Insert()和Get()方法.现在需要把这个类转到另一个接口,分别对应Add()和Select()方法. Mess

【设计模式】—— 适配器模式Adapter

模式意图 如果已经有了一种类,而需要调用的接口却并不能通过这个类实现.因此,把这个现有的类,经过适配,转换成支持接口的类. 换句话说,就是把一种现有的接口编程另一种可用的接口. 模式结构 [类的适配器] Target 目标接口 Adaptee 现有的类 Adapter 中间转换的类,即实现了目标接口,又继承了现有的类. 1 package com.xingoo.test1; 2 interface Target{ 3 public void operation1(); 4 public void

解读设计模式----适配器模式(Adapter Pattern)

在金庸笔下,三大神功都是难得之宝,多少人为得到他而......,仔细的分析下这三大神功,还是北冥较好,呵呵.我们从软件设计的角度来看,这不知算不算得上是一种复用(功力复用)的思想,只不过有点残忍罢.而在软件设计领域里,"复用"在某些时候也会出现很多问题,比如平台不兼容,开发语言不同或是接口不同等多种原因,弄得不好会不会出现既浪费了别人的现有资源,而自己的系统又无法完成呢?这有点像吸星----损人又损己. 企图将设计做好,就能够一劳永逸地坐享其成,这样的愿望就好上面所提到的吸星神功一般,

温故而知新:设计模式之适配器模式(Adapter)

借用terrylee的原话: Adapter模式主要应用于"希望复用一些现存的类,但是接口又与复用环境要求不一致的情况",在遗留代码复用.类库迁移等方面非常有用. 适配器模式再次体现了"面向接口编程,而非面向实现编程"这一精神. 场景: 有一个基于数据库的系统,里面的数据库操作就拿最常用的查询来说,主要是用SqlHelper类里的QueryData(string sql)这个方法来处理的,后来意外发现该方法实现上性能并不是最好(或者不能满足新的需要),而这时正好有一

第6章 适配器模式(Adapter Pattern)

原文 第6章 适配器模式(Adapter Pattern) 概述 将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作.  解决的问题 即Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作. 注:        在GoF的设计模式中,对适配器模式讲了两种类型,类适配器模式和对象适配器模式.由于类适配器模式通过多重继承对一个接口与另一个接口进行匹配,而C#.java等语言都不支持多重继承,因而这里只是介绍

Adapter适配器模式在JavaScript设计模式编程中的运用分析_基础知识

定义适配器模式(Adapter)是将一个类(对象)的接口(方法或属性)转化成客户希望的另外一个接口(方法或属性),适配器模式使得原本由于接口不兼容而不能一起工作的那些类(对象)可以一些工作.速成包装器(wrapper). 适配器的别名是包装器(wrapper),这是一个相对简单的模式.在程序开发中有许多这样的场景:当我们试图调用模块或者对象的某个接口时,却发现这个接口的格式并不符合目前的需求.这时候有两种解决办法,第一种是修改原来的接口实现,但如果原来的模块很复杂,或者我们拿到的模块是一段别人编

PHP的适配器模式

适配器模式(Adapter)模式:将一个类的接口,转换成客户期望的另一个类的接口.适配器让原本接口不兼容的类可以合作无间. [适配器模式中主要角色] 目标(Target)角色:定义客户端使用的与特定领域相关的接口,这也就是我们所期待得到的 源(Adaptee)角色:需要进行适配的接口 适配器(Adapter)角色:对Adaptee的接口与Target接口进行适配:适配器是本模式的核心,适配器把源接口转换成目标接口,此角色为具体类. 其实也就是你家墙上有一个两口的插座(Adaptee),但你买了一

Design Pattern – Proxy, Adapter, Facade, Mediator

这几个模式比较类似, 都是用作interface, 但有所不同  Proxy, 特点是以假乱真, client在使用的时候就和在使用真正的object一样, 接口完全一致, proxy和object的交互是对client透明的  Adapter, 典型的是电源的adapter, 美标换欧标, 即解决接口不匹配, client和lib都已经写好, 但接口不匹配  Facade, 用于屏蔽子系统的细节, 提供高层接口层  Mediator, 典型的房产中介, 当对象之间关系复杂的时候, 避免对象之间

ASP.NET的适配器设计模式(Adapter)应用详解_实用技巧

前天有一网友问及有关设计模式的适配器模式(Adapter)时,说不太好理解.让Insus.NET能否举个简单的例子来说明一下.下面的动画是Insus.NET做出来的效果: 上面的演示,两个灯的规格一样,要求输入的电压为15伏. Light1是直接使用,而Light2是使用Adapter(电源适配器).因此Light1只能接收15伏的电压,小于15伏,会提示电压过低,如果超过了15伏,Light1肯定被烧坏. Light2使用了电源适配器,它接收15伏至220的电压,在这电压范围之内,电源适配器会