适配器模式

设计模式:适配器模式

[亡魂溺海] 提交于 2019-12-17 05:18:45
设计模式系列目录 1. 设计模式:策略模式 2. 设计模式:单例模式 3. 设计模式:观察者模式 4. 设计模式:工厂方法模式 5. 设计模式:抽象工厂方法模式 6. 设计模式:命令模式 7. 设计模式:适配器模式 8. 设计模式:装饰者模式 作者: 李鹏 出处: http://www.cnblogs.com/li-peng/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 1. 设计模式:策略模式 2. 设计模式:单例模式 3. 设计模式:观察者模式 4. 设计模式:工厂方法模式 5. 设计模式:抽象工厂方法模式 6. 设计模式:命令模式 7. 设计模式:适配器模式 8. 设计模式:装饰者模式 来源: https://www.cnblogs.com/xiaoshuai1992/p/3893138.html

[06]Go设计模式:适配器模式(Adapter Pattern)

╄→尐↘猪︶ㄣ 提交于 2019-12-15 18:18:15
目录 适配器模式 一、简介 二、代码 三、参考资料 适配器模式 一、简介 适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。例如: 在现实生活中,我们的笔记本电脑的工作电压大多数都是20V,而我国的家庭用电是220V,如何让20V的笔记本电脑能够工作在220V的电压下工作?答案:引入一个电源适配器,俗称变压器,有了这个电源适配器,生活用电和笔记本电脑即可兼容。 二、代码 package main import "fmt" // 将一个类的接口转换成客户希望的另一个接口,Adapter模式使得原本由于接口 // 不兼容而不能一起工作的那些类可以一起工作 // 定义一个新的接口 type Target interface { Process() } // 定义一个老的接口 type Adaptee interface { Foo() Bar() } // 定一个Adapter接口 type Adapter struct { adaptee Adaptee } func (a *Adapter) Process(){ fmt.Println("在Adapter中执行process()") a.adaptee.Bar() a

适配器模式(Adapter模式)

巧了我就是萌 提交于 2019-12-12 11:42:42
在现实生活中,经常出现两个对象因接口不兼容而不能在一起工作的实例,这时需要第三者进行适配。例如,讲中文的人同讲英文的人对话时需要一个翻译,用直流电的笔记本电脑接交流电源时需要一个电源适配器,用计算机访问照相机的 SD 内存卡时需要一个读卡器等。 在软件设计中也可能出现:需要开发的具有某种业务功能的组件在现有的组件库中已经存在,但它们与当前系统的接口规范不兼容,如果重新开发这些组件成本又很高,这时用适配器模式能很好地解决这些问题。 模式的定义与特点 适配器模式(Adapter)的定义如下:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。适配器模式分为类结构型模式和对象结构型模式两种,前者类之间的耦合度比后者高,且要求程序员了解现有组件库中的相关组件的内部结构,所以应用相对较少些。 该模式的主要优点如下。 客户端通过适配器可以透明地调用目标接口。 复用了现存的类,程序员不需要修改原有代码而重用现有的适配者类。 将目标类和适配者类解耦,解决了目标类和适配者类接口不一致的问题。 其缺点是:对类适配器来说,更换适配器的实现过程比较复杂。 模式的结构与实现 类适配器模式可采用多重继承方式实现,如 C++ 可定义一个适配器类来同时继承当前系统的业务接口和现有组件库中已经存在的组件接口;Java 不支持多继承

设计模式之☞适配器模式,通俗易懂,一学就会!!!

↘锁芯ラ 提交于 2019-12-10 22:10:05
简介   适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。 功能展示 场景模拟   外国出差,给笔记本充电,德国有一套德国标准,中国有一套中国标准( 国标 ),国际有一套国际标准,插排上有不同的孔,二孔、三孔等等( 案例不一定真实 )。。。 功能介绍 给笔记本充电 代码实现 德国标准 德国接口:DBSocket.java package com.cyb.ssm.design_pattern.adapter; /** * 德国标准的插排 * @author apple * */ public interface DBSocket { void charge(); } 德国接口实现:DBSocketImpl.java package com.cyb.ssm.design_pattern.adapter; /** * 德国标准的插排 * @author apple * */ public class DBSocketImpl implements DBSocket { @Override public void charge() { System.out.println("使用两眼插孔充电。。。"); } } 国标标准(中国)

JAVA设计模式之适配器模式

 ̄綄美尐妖づ 提交于 2019-12-10 03:11:12
定义: 适配器模式将一个类的接口,转换成客户期望的另一个接口。使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。 适配器的分类: 组合:采用组合的方式的适配器成为对象适配器  特点:把“被适配者”作为一个对象组合到适配器类中,以修改目标接口包装被适配者       2.继承:采用继承的方式称为类适配器       特点:通过多重继承不兼容接口,实现对目标接口的匹配,单一的为某个类而实现适配 作用: 1. 透明:通过适配器,客户端可以调用同一个接口,因而对客户端来说是透明的。这样做更简单、直接、紧凑。 2. 重用:复用了现存的类,解决了现存类和复用环境要求不一致的问题。 3. 低耦合:将目标类和适配者类解耦,通过引入一个适配器重用现有的适配者,而无需修改原有代码(遵循开闭原则) 示例项目:有台笔记本需要三相插座充电,但有个二相电源,需要创建一个适配器进行两项转三相进行充电 代码示例 1.创建一个三相插座接口 1 /** 2 * 三相插座接口 3 * */ 4 public interface ThreePlugIf { 5 //使用三相电流充电 6 public void powerWithThree(); 7 8 } View Code 2.创建一个二相电源类 1 public class GBTowPlug { 2 //使用二相电流供电 3 public void

案例分析:设计模式与代码的结构特性

时光总嘲笑我的痴心妄想 提交于 2019-12-08 17:06:49
Adapter(适配器)模式   首先先大致解释一下软件工程当中的适配器模式,适配器模式指的是将⼀个类的接口转换成客户所希望的另外⼀个接口,将⼀个⽆法控制的现有对象与⼀个特定接口相匹配,⽤我们需要的接口对⽆法修改的类进⾏包装。我在接下来提供的例程代码中侧重解释一下包装这一特征。 引用关键代码解释该设计模式在该应用场景中的适用性 1 class Ui_MainWindow(QtWidgets.QWidget): 2 def __init__(self, parent=None): 3 super().__init__(parent) 4 self.setFixedSize(self.width(), self.height()) 5 self.timer_camera = QtCore.QTimer() 6 self.cap = cv2.VideoCapture() 7 self.CAM_NUM = 0 8 self.set_ui() 9 self.slot_init() 10 self.icons = [] 11 self.gen_iconlist() 12 self.coverflag = False 13 self.embedingList = [] 14 self.mtcnn_detector = self.load_align() 15 self.images

案例分析:设计模式与代码的结构特性

我只是一个虾纸丫 提交于 2019-12-08 14:03:35
本次作业,我选择的模式为适配器模式。生活中有许多这样的例子,比如type c接口的数据线无法为micro sub接口的手机充电,中间需要加上一个转换口,说英语的人无法与说中文的人交流,这就需要一个翻译。在软件设计中也可能出现:需要开发的具有某种业务功能的组件在现有的组件库中已经存在,但它们与当前系统的接口规范不兼容,如果重新开发这些组件成本又很高,这时用适配器模式能很好地解决这些问题。 适配器模式的定义与特点 适配器模式(Adapter) 的定义如下:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。 适配器模式分为类结构型模式和对象结构型模式两种,前者类之间的耦合度比后者高,且要求程序员了解现有组件库中的相关组件的内部结构,所以应用相对较少些。 该模式的主要优点如下: 客户端通过适配器可以透明地调用目标接口。 复用了现存的类,程序员不需要修改原有代码而重用现有的适配者类。 将目标类和适配者类解耦,解决了目标类和适配者类接口不一致的问题。 缺点就是对于类适配器来说,适配器的更换是一件非常麻烦的事情。 适配器模式的结构 适配器模式(Adapter)包含以下主要角色。 目标(Target)接口:当前系统业务所期待的接口,它可以是抽象类或接口。 适配者(Adaptee)类:它是被访问和适配的现存组件库中的组件接口。 适配器(Adapter

【转载】设计模式也可以这么简单

烂漫一生 提交于 2019-12-07 18:54:29
一直想写一篇介绍设计模式的文章,让读者可以很快看完,而且一看就懂,看懂就会用,同时不会将各个模式搞混。自认为本文还是写得不错的😂😂😂,花了不少心思来写这文章和做图,力求让读者真的能看着简单同时有所收获。 设计模式是对大家实际工作中写的各种代码进行高层次抽象的总结,其中最出名的当属 Gang of Four ( GoF ) 的分类了,他们将设计模式分类为 23 种经典的模式,根据用途我们又可以分为三大类,分别为创建型模式、结构型模式和行为型模式。 有一些重要的设计原则在开篇和大家分享下,这些原则将贯通全文: 面向接口编程,而不是面向实现。这个很重要,也是优雅的、可扩展的代码的第一步,这就不需要多说了吧。 职责单一原则。每个类都应该只有一个单一的功能,并且该功能应该由这个类完全封装起来。 对修改关闭,对扩展开放。对修改关闭是说,我们辛辛苦苦加班写出来的代码,该实现的功能和该修复的 bug 都完成了,别人可不能说改就改;对扩展开放就比较好理解了,也就是说在我们写好的代码基础上,很容易实现扩展。 创建型模式比较简单,但是会比较没有意思,结构型和行为型比较有意思。 创建型模式 创建型模式的作用就是创建对象,说到创建一个对象,最熟悉的就是 new 一个对象,然后 set 相关属性。但是,在很多场景下,我们需要给客户端提供更加友好的创建对象的方式,尤其是那种我们定义了类

案例分析:设计模式与代码的结构特性—适配器模式

家住魔仙堡 提交于 2019-12-06 22:01:58
一.设计模式简介 设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。 设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理地运用设计模式可以完美地解决很多问题,每种模式在现实中都有相应的原理来与之对应,每种模式都描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是设计模式能被广泛应用的原因。 二.设计模式的使用 设计模式在软件开发中的两个主要用途。 1.开发人员的共同平台 设计模式提供了一个标准的术语系统,且具体到特定的情景。例如,单例设计模式意味着使用单个对象,这样所有熟悉单例设计模式的开发人员都能使用单个对象,并且可以通过这种方式告诉对方,程序使用的是单例模式。 2.最佳的实践 设计模式已经经历了很长一段时间的发展,它们提供了软件开发过程中面临的一般问题的最佳解决方案。学习这些模式有助于经验不足的开发人员通过一种简单快捷的方式来学习软件设计。

案例分析:设计模式与代码的结构特性

左心房为你撑大大i 提交于 2019-12-06 13:12:34
我选择分析的设计模式是“ 适配器模式(Adapter Pattern) ” 应用的场景是:1.业务的接口与工作的类不兼容,(比如:类中缺少实现接口的某些方法)但又需要两者一起工作;2. 在现有接口和类的基础上为新的业务需求提供接口。 一、简单介绍 适配器模式(Adapter Pattern)就是把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口原因不匹配而无法一起工作的两个类能够一起工作。适配类可以根据参数返还一个合适的实例给客户端。 二、适配器模式的结构 适配器模式分为类适配器模式和对象适配器模式。关于类适配模式,因为java的单继承,所以在已继承一个类时,另外的只能是接口,需要手动实现相应的方法,这样在客户端就可以创建任一种符合需求的子类,来实现具体功能。而另外一种对象适配器,它不是使用继承再实现的方式,而是使用直接关联,或者称为委托的方式。我们生活中常常听到的是: 电源适配器,它是用于电流变换(整流)的设备。适配器的存在,就是为了将已存在的东西(接口)转换成适合我们的需要、能被我们所利用。在现实生活中,适配器更多的是作为一个中间层来实现这种转换作用。在上面的通用类图中,Cient 类最终面对的是 Target 接口(或抽象类),它只能够使用符合这一目标标准的子类;而 Adaptee 类则是被适配的对象(也称 源角色),因为它包含specific (特殊的)操作