适配器模式

设计模式(7)---适配器模式

早过忘川 提交于 2020-01-19 23:00:07
上一篇: 原型模式 1.什么是适配器模式?   下面这个读卡器的性质就能够非常清晰的表示这个问题:    读卡器 作为 内存卡 和 电脑 之间的沟通桥梁,使得我们可以通过笔记本来存取内存卡上面的数据。 官方一点的解释:   适配器模式是作为两个完全独立不兼容的接口的连接桥梁。在适配器模式中我们定义一个类,该类负责加入独立的接口功能。 2.适配器模式的优缺点? 1)优点:   使两个毫无关系的类能够一起合作运行,提高了类的复用性。 2)缺点:   提高了代码的复杂性,如果没有必要,尽量少用此模式(个人建议) 适配器模式更多用于已正常运行的项目进行维护升级 3.适配器模式怎么使用? 2.1 类继承 1)定义内存卡类 内存卡拥有存储功能,其他设备连接上内存卡后可以访问其存储的数据。 /** * 定义内存卡接口 */ public class MemoryCard { /** * 内存卡的存储功能 */ void storage ( ) { System . out . println ( "从内存卡中获取存储的文件" ) ; } } 2)定义读卡器类 读卡器类就是将电脑和内存卡两个互相独立的类进行连接整合,它既有电脑的USB插口,也有内存卡的插口。 /** * 定义 读卡器 接口 */ public class CardReader extends MemoryCard

设计模式-适配器模式

旧城冷巷雨未停 提交于 2020-01-18 09:04:14
适配器模式 类适配器 Adaptee public class Adaptee { public void adapteeRequest(){ System.out.println("Adaptee method!"); } } Target public interface Target { void request(); } Adapter public class Adapter extends Adaptee implements Target { @Override public void request() { super.adapteeRequest(); } } 测试一下 public class test { public static void main(String[] args) { Target target = new Adapter(); target.request(); Target concreteTarget = new ConcreteTarget(); concreteTarget.request(); } } 对象适配器 Adapter public class Adapter implements Target{ // 适配者是对象适配器的一个属性 private Adaptee adaptee = new Adaptee();

UML基础与应用之部分设计模式介绍

我只是一个虾纸丫 提交于 2020-01-18 03:05:59
一、命令模式(Command Pattern) Client:创建一个操作命令(ConcreteCommand)对象并确定其接受者; Command:声明一个给所有具体命令类的接口; ConcreteCommand:定义一个接受者和行为之间的弱耦合,实现execute()方法“用于调用接受者相应操作” Invoker:敷在调用命令对象执行请求; Receiver:具体实施一个请求; 具体例子如下: Client:玉皇大帝;Invoker:太白金星;Command:圣旨; ConcreteCommand:立即报到指令;Receiver:孙悟空; 二、适配器模式(Adapter Patterns) 类适配器:(用继承实现) 对象适配器:(用组合实现) 来源: CSDN 作者: 15期赵勇彪 链接: https://blog.csdn.net/TGB__15__ZYB/article/details/103988729

JAVA 设计模式 适配器模式

我与影子孤独终老i 提交于 2020-01-17 12:36:17
目录 用途 适配器模式 (Adapter) 将一个类的接口 转换 成客户希望的另外一个接口。 Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 适配器模式是一种 结构型模式 。 结构 图-适配器模式结构图 Target : 定义用户实际 需要的接口 。 abstract class Target { public abstract void Request(); } Adaptee : 定义一个需要 适配的接口 。 class Adaptee { public void SpecificRequest() { System.out.println("特殊请求"); } } Adapter : 通过在内部 包装一个 Adaptee 对象 ,把源接口转换成目标接口。 class Adapter extends Target { private Adaptee adaptee = new Adaptee(); @Override public void Request() { adaptee.SpecificRequest(); } } 测试代码 public class AdapterPattern { public static void main(String[] args) { Target target = new Adapter(); target

JAVA设计模式之适配器模式

↘锁芯ラ 提交于 2020-01-17 00:13:39
场景问题 旧的电源类和旧的硬盘类配合得很好,但是此时如果加入一个新的硬盘类,他们的接口可能不匹配,即怎么用原有的电源类匹配新的硬盘类 不同模式下的解决方案 使用适配器来解决问题 定义 : 将一个类的接口转为客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能在一起工作的那些类可以一起工作 示例代码 /** * 定义客户端使用的接口 */ public interface Target { /** * 示意方法 客户端处理请求的方法 */ void request(); } /** * 已经存在的接口 ,这个接口需要被适配 * @author 谭婧杰 * @data 2020/1/16 */ public class Adaptee { public void specificRequest(){ System.out.println("已经存在接口"); } } /** * @author 谭婧杰 * @data 2020/1/16 */ public class Adapter implements Target { private Adaptee adaptee; /** * getset 传入被适配的对象 * @param adaptee */ Adapter(Adaptee adaptee){ this.adaptee = adaptee; } @Override

适配器模式

天大地大妈咪最大 提交于 2020-01-16 10:03:23
定义: 适配器模式是将一个类的接口变换成客户端所期待的另一种接口,从而使原本因为接口不匹配而无法在一起工作的两个类能够在一起工作。 适配器在生活中还是很常见的,下面就是一个其中一种:电源适配器,目的是将220V电压输出成12V 就以电源适配器一个适配器模式的例子,我们生活电压是220V的,现在需要输出12V电压,通过电源适配器完成将220V转换成12V的作用。 220V电压类V220: class V220 { void export220 ( ) { System . out . println ( "输出电压220V" ) ; } } 我们期待的12V接口 interface IV12 { //输出12V void export12 ( ) ; } 适配器Adapter继承 V220 同时又实现 IV12 接口 class VAdapter extends V220 implements IV12 { @Override public void export12 ( ) { //将220V转换成12V输出 System . out . println ( "输出12V电压" ) ; } } 执行测试: public static void main ( String [ ] args ) { IV12 iv12 = new VAdapter ( ) ; iv12 .

JAVA几何图形(适配器模式)

独自空忆成欢 提交于 2020-01-16 05:09:27
适配器(Adapter)模式将一个类的接口转换成客户希望的另外一个接口,能够使得原本由于接口不兼容而不能一起工作的那些类可以协同工作了。 package JAVA_Project_01_05 ; /* 适配器(Adapter)模式将一个类的接口转换成客户希望的另外一个接口,能够使得原本由于接口不兼容而不能一起工作的那些类可以协同工作了。 */ /* 实现适配器模式的技术要点如下: · 目标类是Adapter的父类,Adapter需要继承目标类,以具备目标类提供的功能。 · Adapter是适配器模式中的适配者,它本身并不实现任何功能,但是能提供功能,即它能将其他类的功能据为己有。 · Adapter是适配器模式中的被适配者,Adapter需要实现Adapter的接口,以提供Adapter提供的功能。在Adapter的构造方法中,传入一个具体的Adapter对象,在实现Adapter接口定义的方法中,调用Adapter对象的相应方法。 */ interface Shape { //定义形状接口 public void setPosition ( int position ) ; //设置位置 public int getPositioin ( ) ; //获得位置 public void move ( ) ; //移动位置 public void display ( ) ; /

python-适配器模式

旧时模样 提交于 2020-01-13 22:05:34
源码地址: https://github.com/weilanhanf/PythonDesignPatterns 说明: 为了解决接口不兼容的问题引进一种接口的兼容机制,就是适配器模式,其通过提供一种适配器类将第三方提供的接口转换为客户希望的接口。生活中的例子例如:手机充电器要将220v的电源转换为手机适合的电压才能充电。这个充电器就起到了适配的作用。 适配器模式:将一个类的接口转换成客户希望的另一个接口。适配器模式让那些接口不兼容的类可以一起工作。适配器模式 别名为包装器(Wrapper)模式 定义中所提及的接口是指广义的接口,它可以表示一个方法或者方法的集合 适配器模式的结构 适配器模式包含以下3个角色: Target(目标抽象类) Adapter(适配器类) Adaptee(适配者类) 实例: 假设某公司A与某公司B需要合作,公司A需要访问公司B的人员信息,但公司A与公司B协议接口不同,该如何处理?先将公司A和公司B针对各自的人员信息访问系统封装了对象接口。 class ACpnStaff: """ A公司 """ name="" id="" phone="" def __init__(self,id): self.id=id def getName(self): print("A protocol getName method...id:%s"%self.id)

设计模式-适配器模式

空扰寡人 提交于 2020-01-13 04:06:20
介绍 定义:定义一个包装类,用于包装不兼容接口的对象。 包装类=适配器Adapter 被包装对象=适配者Adaptee=被适配的类 主要作用:把一个类的接口变化成客户端所期待的另一种接口,从而使原本接口不匹配而无法一起工作的两个类能够在一起工作。 解决问题:原本接口不兼容而不能一起工作的那些类可以在一起工作。 分类: 类的适配器模式、 对象的适配器模式。 原理 类的适配器模式 ​ 用于适配的接口: interface Target { public void request ( ) ; } ​ 需要被适配的类: class Adaptee { public void speccificRequest ( ) { } } ​ 中间适配类: class Adapter extends Adaptee implements Target { //目标接口要求调用这个方法,但是源类里面没有这个方法,用来包装一下 @Override public void request ( ) { super . speccificRequest ( ) ; } ; } ​ 使用: Target adapter = new Adapter ( ) ; adapter . request ( ) ; 对象的适配器模式 ​ 和类的适配器模式相比: 相同点:把适配的类的API转换为目标类的API。 不同点

设计模式十一:适配器模式

拥有回忆 提交于 2020-01-12 22:44:16
目录 适配器模式 代码示例 适配器模式 适配器模式(Adapter Pattern)是指将一个类的接口转换为客所期望的另一个接口,使原来不兼容的接口类可以一块工作,属于结构型设计模式。 适配器模式适用的业务场景: 1、类已经存在,但是它的方法和需求不匹配(方法和结果相似或相同); 2、随着产品的维护,由于不同产品或者商家造成功能类似但是接口不同的情况而采取的方案 适配器模式优点: 1、提高类的透明性和复用,复用现有的类而不用修改 2、目标类和适配器解耦,提高程序的扩展性 3、符合开闭原则 适配器模式缺点: 1、需要全面考虑,增加了系统的复杂性 2、适配器太多会造成代码凌乱,降低了代码的可读性 代码示例 以生活中用电为例,我国用电都是220V交流电,但是很多时候都需要不同的直流电等,这时候需要一个电源适配器作转换,首先创建一个220V电: public class Ordinary { public int outPut220 ( ) { int outPut = 220 ; System . out . println ( "输出220V" ) ; return outPut ; } } 创建一个需要5V直流电的接口: public interface Need5 { int outPut5 ( ) ; } 定义一个适配器,用于把220V转换为5V: public class