适配器模式

设计模式之适配器模式

懵懂的女人 提交于 2019-11-30 02:50:45
适配器模式概念 适配器模式是将一个类(对象)的接口(方法或属性)转换成客户希望的另外一个接口(方法或属性), 适配器模式使得原本由于接口不兼容而不能一起工作的那些类(对象)可以一起工作。 适配器模式的作用: 1.使用一个已经存在的对象,但其方法或接口不符合你的要求。 2.创建一个可复用的对象,该对象可以与其他不相关或不可见的对象协同工作。 3.使用已经存在的一个或多个对象,但是不能进行继承已匹配她的接口。 注意事项: 1.与代理模式的区别,代理模式是不改变原接口适配是原接口不符合规范。 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <script> // var aa = { // test:function(argument){ // //body // }, // go:function(){ // } // } // aa.test(); function pp(){

Java结构型设计模式 —— 适配器模式适用于什么场景呢?

百般思念 提交于 2019-11-29 19:12:45
一、引言 来看生活中这样一个适配器案例,假设小编今年经费有限,来到了泰国旅游。 这一路上奔波的手机都没电了,到了酒店就打算充会电发现泰国插座用的都是两孔的,这个国内的插头用不了呀,就只好找酒店要了个 多功能转换插头(适配器) ,这样才把电冲上。 适配器模式(Adapter Pattern),结构型设计模式 别名为包装器,将某个类的接口转换成客户端期望的另一个接口表示,主要目的就是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。 主要分为三大类: 类适配器模式、对象适配器模式、接口适配器模式 。 二、适配器模式的工作原理 大家现在国内所看到的插头,电源输出一般是220V,但我们在给手机充电的时候,其实手机是不接受这个220V的电压的,所以充电器把220V的电压转换成手机所需要的电压,手机才能充电,这里设计到三个角色。 被适配者角色( Adaptee ):对应的就是220V电压,这是插头默认的输出电压 适配者角色( Adapter ):对应的就是手机充电器,手机充电器把22V电压,转换成手机所需要的电压 目标角色 (Target): 对应的是5V电压,最后手机所需要的电压。 1、将一个类的接口转换成另一个种接口,让原本接口不兼容的类可以兼容 2、从用户的角度看不到被适配者,是结耦的。 3、用户调用适配器转化出来的目标接口方法,适配器再调用被适配者相关接口方法。 4

设计模式——适配器模式

ⅰ亾dé卋堺 提交于 2019-11-29 17:48:56
1:什么是适配器模式   当客户需要一个A,可是厂家1没有A只有C,厂家2没有A只有D。这时候就需要一个适配的角色,将C、D客户需要的A。 2:角色   目标角色:就是客户需要的A   适配角色:就是厂家1的C,厂家2的D   适配器角色:就是将C、D转换成A 3:具体的代码   adapter接口:客户需要的A   adpater1类:厂家的medC、medD   adapter实现类:适配器的角色,将厂家的medC、D装换成客户需要的A adapter接口:public interface Adapter { public String medA1(); public String medA2(); } adpater1类public class Adapter1 { public String medB(){ return "medB"; } public String medC(){ return "medC"; } } adapter实现类public class Adpater1Impl implements Adapter { private final Adapter1 adapter1; public Adpater1Impl(Adapter1 adapter1) { this.adapter1 = adapter1; } @Override public

设计模式之适配模式、外观模式

戏子无情 提交于 2019-11-29 05:52:40
一、适配模式 1、什么是适配器 在设计模式中,适配器模式(英语:adapter pattern)有时候也称包装样式或者包装(wrapper)。将一个类的接口转接成用户所期待的。一个适配使得因接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。 2、适配器分类 适配器分为,类适配器、对象适配、接口适配方式 类适配器方式采用继承方式,对象适配方式使用构造函数传递 3、适配器案例 我们就拿日本电饭煲的例子进行说明,日本电饭煲电源接口标准是110V电压,而中国标准电压接口是220V,所以要想在中国用日本电饭煲,需要一个电源转换器。 1)定义日本和中国两种接口及其实现 我们先定义日本220V电源接口和实现。 110V电源接口 //日本110V 电源接口 public interface JP110VInterface { public void connect(); } 110V电源接口实现 public class JP110VInterfaceImpl implements JP110VInterface { @Override public void connect() { System.out.println("日本110V,接通电源,开始工作.."); } } 我们再定义中国220V电源接口和实现。 public interface

通俗易懂设计模式解析——适配器模式

你说的曾经没有我的故事 提交于 2019-11-29 03:51:40
前言   前面完成了创建型的设计模式的分享,创建型的设计模式解决的是对象创建的问题。今天开始介绍结构型的设计模式,其中结构型设计模式包括:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。结构型设计模式解决的是类与对象的组合关系。今天讲结构型对象中的第一个——适配器模式。适配器模式——顾名思义嘛。在我们平常的理解中,适配器是干啥用的呢?不就是将两个原本不匹配的东西转换为匹配罢了。适配器是接口转换器,比如电源适配器,USB接口转换器等等。 适配器模式介绍 一、 来由   在系统程序中,我们可能会面临需求的增加或者改变,或者是应用环境的改变。常常需要将一些已经存在的类放在新的需求或者新的环境中应用。但是新的环境要求使用到的接口与现在存在的类或对象不完全匹配。那么如何去面对这样的迁移变化呢? 二、 意图    将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 三、 案例图 四、 适配器模式代码示例   在适配器模式中一般包含以下部分的存在: 客户端: 与目标接口配合协同使用 目标接口: 与客户端协同使用 被适配角色: 表示一个已经存在了并使用的接口 适配器: 整个模式核心存在,将被适配角色转换为目标需要的接口。   接下来我们看下这个示例,前段时间笔记本那个耳机圆孔接口坏掉了

Java之美[从菜鸟到高手演变]之设计模式二

强颜欢笑 提交于 2019-11-29 03:28:23
我们接着讨论设计模式,上篇文章我讲完了5种创建型模式,这章开始,我将讲下7种结构型模式:适配器模式、装饰模式、代理模式、外观模式、桥接模式、组合模式、享元模式。其中对象的适配器模式是各种模式的起源,我们看下面的图: 6、适配器模式(Adapter) 适配器模式将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题。主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式。首先,我们来看看 类的适配器模式 ,先看类图: 核心思想就是:有一个Source类,拥有一个方法,待适配,目标接口时Targetable,通过Adapter类,将Source的功能扩展到Targetable里,看代码: [java] view plain copy print ? public class Source { public void method1() { System.out.println( "this is original method!" ); } } public class Source { public void method1() { System.out.println("this is original method!"); } } [java] view plain copy print ? public interface

23种设计模式之适配器模式

我是研究僧i 提交于 2019-11-29 00:32:02
适配 即在不改变原有实现的基础上,将原先不兼容的接口转换为兼容的接口。 例如:二转换为三箱插头,将高电压转换为低电压等。 动机(Motivate): 在软件系统中,由于应用环境的变化,常常需要将“一些现存的对象”放在新的环境中应用,但是新环境要求的接口是这些现存对象所不满足的。 那么如何应对这种“迁移的变化”?如何既能利用现有对象的良好实现,同时又能满足新的应用环境所要求的接口?这就是本文要说的 Adapter 模式。 意图(Intent): 将一个类的接口转换成客户希望的另外一个接口。 Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 -------《设计模式》GOF 抽象的 UML 类图   4 种角色:Adaptee(被适配),Adapter(适配者),Client(使用场景),Target(目标对象)。   Adaptee(被适配):不是 -er 结尾的哦,之前的 Portal(入口)类作为被适配者。   Adapter(适配者):作为 Adaptee 和 Target 的媒介,进行调节。   Client(使用场景):一个调用的入口,以 Main() 作为入口函数。   Target(目标对象):调节(适配)后的输出,之前的 IOutput 接口和 Export 类都是作为 Target 对象。 图:类适配器(使用继承) 图:对象适配器

适配器模式(七)

亡梦爱人 提交于 2019-11-28 22:13:13
在现实生活中,经常出现两个对象因接口不兼容而不能在一起工作的实例,这时需要第三者进行适配。例如,讲中文的人同讲英文的人对话时需要一个翻译,用直流电的笔记本电脑接交流电源时需要一个电源适配器,用计算机访问照相机的 SD 内存卡时需要一个读卡器等。 在软件设计中也可能出现:需要开发的具有某种业务功能的组件在现有的组件库中已经存在,但它们与当前系统的接口规范不兼容,如果重新开发这些组件成本又很高,这时用适配器模式能很好地解决这些问题。 一、定义 将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。适配器模式分为类结构型模式和对象结构型模式两种,前者类之间的耦合度比后者高,且要求程序员了解现有组件库中的相关组件的内部结构,所以应用相对较少些。 二、模式的结构与实现 1. 模式的结构 适配器模式(Adapter)包含以下主要角色: 目标(Target)接口:当前系统业务所期待的接口,它可以是抽象类或接口。 适配者(Adaptee)类:它是被访问和适配的现存组件库中的组件接口。 适配器(Adapter)类:它是一个转换器,通过继承或引用适配者的对象,把适配者接口转换成目标接口,让客户按目标接口的格式访问适配者。 类适配器模式的结构图: 对象适配器模式的结构图: 2. 模式的实现 (1) 类适配器的模式实现 --- 继承适配者类 (2

ListView详细介绍与使用

与世无争的帅哥 提交于 2019-11-28 18:22:52
前言介绍: 关于 ListView 我们大家都应该是非常的熟悉了,在 Android 开发中是经常用到的,今天就再来回顾一下, ListView 的使用方法,和一些需要优化注意的地方,还有日常开发过程中的一些小技巧和经验。 ListView 简介 ListView 是 Android 系统为我们提供的一种列表显示的一种控件,使用它可以用来显示我们常见的列表形式。继承自抽象类 AdapterView 。 类的关系图: 表现形式 这就是一种最简单的 ListView 的表现形式,黑色框就是 ListView 控件,其中由一个个的 item 组成(红色框内容),然后可以通过向下滑动来查看很多的条目。 工作原理 ListView 仅是作为容器(列表),用于装载显示数据(就是上面的一个个的红色框的内容,也称为 item)。item 中的具体数据是由适配器(adapter)来提供的。 适配器(adapter):作为 View (不仅仅指的 ListView)和数据之间的桥梁或者中介,将数据映射到要展示的 View 中。这就是最简单适配器模式,也是适配器的主要作用! 当需要显示数据的时候,ListView 会从适配器(Adapter)中取出数据,然后来加载数据。 ListView 负责以列表的形式向我们展示 Adapter 提供的内容 缓存原理 前面讲了 ListView 负责把 Adapter

Java 中几种常用设计模式

醉酒当歌 提交于 2019-11-28 16:30:43
Java 中一般认为有23种设计模式,当然暂时不需要所有的都会,但是其中常见的几种设计模式应该去掌握。 总体来说设计模式分为三大类: 创建型模式 ,共五种: 工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式 ,共七种: 适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式 ,共十一种: 策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 1. 单例模式 所谓的单例设计指的是 一个类只允许产生一个实例化对象 。 最好理解的一种设计模式,分为 懒汉式 和 饿汉式 。 1.饿汉式   ——构造方法私有化,外部无法产生新的实例化对象,只能通过static方法取得实例化对象 class Singleton { /** * 在类的内部可以访问私有结构,所以可以在类的内部产生实例化对象 */ private static Singleton instance = new Singleton(); /** * private 声明构造 */ private Singleton() { } /** * 返回对象实例 */ public static Singleton getInstance() { return instance; } public void