适配器模式

19.结构型 - 适配器模式 (Adapter)

风流意气都作罢 提交于 2020-01-12 08:50:15
1.定义 将一个类的接口转换为客户期待的接口(通过Adapter达到兼容接口的目的) 2.UML类图 角色介绍 IAccessSDCardTarget : Target角色,定义了目标接口 TFCardAdaptee : Adaptee角色,需要适配的角色,将其接口适配为Target定义的接口 AccessAdapter : Adapter角色,这里为对象适配器角色,Adapter通过代理的方式与Adaptee连接 要点 Adapter需要实现Target接口,并且代理使用Adaptee对象 3.UML示例代码 /** * Copyright (C), 2016-2020 * FileName: IAccessSDCardTarget * Author: wei.zheng * Date: 2020/1/4 10:05 * Description: Target角色,抽象接口,读写SDCard */ public interface IAccessSDCardTarget { String readSDCard ( ) ; void writeSDCard ( String content ) ; } /** * Copyright (C), 2016-2020 * FileName: TFCardAdaptee * Author: wei.zheng * Date: 2020/1

适配器模式

自闭症网瘾萝莉.ら 提交于 2020-01-12 04:12:07
类适配器模式 我们都知道电瓶车充电有一个电源适配器,那么就来通过这个例子来讲解一下适配器模式。 首先定义源类,电源220V(DY220V): public class DY220V { public int getV(){ return 220; } } 目标类接口(输出48V): public interface SC48V { int sc48v(); } 适配器类: public class PowerAdapter extends DY220V implements SC48V { @Override public int sc48v() { int out = getV() - 172; return out; } } 对象适配器模式 我们保留DY220V和SC48V,让适配器持有DY220V对象并实现SC48V接口: public class PowerAdapter2 implements SC48V { private DY220V dy220V; public PowerAdapter2(DY220V dy220V){ this.dy220V = dy220V; } @Override public int sc48v() { return dy220V.getV() - 172; } } 来源: CSDN 作者: AD钙奶-lalala 链接: https:/

C++模式学习------适配器模式

假如想象 提交于 2020-01-11 10:31:37
适配器模式: 适配器模式属于结构型的设计模式,是将一个类的接口转换成使用方希望的另外一个接口,这样使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 适配器模式有两种: 1.类的适配器:继承不同地类,在适配器类里面实现接口的兼容 1 class Interface_USB 2 { 3 public: 4 void doInterfaceUSB() 5 { 6 cout<<"Interface USB !!!"<<endl; 7 } 8 }; 9 10 class Interface_TYPEC 11 { 12 public: 13 virtual void doPlugin() = 0; 14 }; 15 16 class Interface_Convertor: public Interface_TYPEC,public Interface_USB 17 { 18 public: 19 void doPlugin() 20 { 21 doConvertor(); 22 doInterfaceUSB(); 23 } 24 void doConvertor() 25 { 26 cout<<"Type-c 转 USB"<<endl; 27 } 28 }; 29 30 int main() 31 { 32 Interface_Convertor* adapter = new

C++设计模式——适配器模式

对着背影说爱祢 提交于 2020-01-11 05:39:44
生活中的适配器 买笔记本电脑,买手机时,都有一个电源适配器,电源适配器又叫外置电源,是小型便携式电子设备及电子电器的供电电压变换设备,常见于手机,笔记本电脑上。它的作用是将家里的220V高电压转换成这些电子产品能工作的5V~20V左右稳定的低电压,使它们能正常工作。就是说,如果没有这个电源适配器,我们的手机和电脑就不能进行充电了。 之前同事去日本出差,由于工作需要,就将自己的笔记本带过去了。到了的当晚就悲剧了,笔记本无法使用。由于日本的居民用电电压是110V,而中国是220V,同事的笔记本是220V供电的。第二天,同事就去买了一个电压适配器。如果没有电压适配器,估计这次出差都要悲剧了。 什么是适配器模式? 说了这么多生活中的适配器的例子,那么在软件设计、开发过程中,适配器又是个什么东西呢? 在GOF的《设计模式:可复用面向对象软件的基础》中是这样说的:将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。好比日本现在就只提供110V的电压,而我的电脑就需要220V的电压,那怎么办啦?适配器就是干这活的,在不兼容的东西之间搭建一座桥梁,让二者能很好的兼容在一起工作。 为什么要使用适配器模式? 在软件开发中,有的时候系统的数据和行为都正确,但接口不符合,我们应该考虑使用适配器模式,目的是使控制范围之外的一个原有对象与某个接口匹配

适配器模式(C++)

点点圈 提交于 2020-01-11 00:21:33
#include <iostream> using namespace std; class USA_bolt { public: USA_bolt(){} ~USA_bolt(){} void insert(){cout<<"insert"<<endl;} }; class target { public: target(){} virtual ~target(){} virtual void charu()=0; }; class China_outlet_adapter : public target { public: China_outlet_adapter(){} virtual ~China_outlet_adapter(){} void charu(){_instance->insert();} private: USA_bolt *_instance; }; int main() { target *p=new China_outlet_adapter; p->charu(); delete p; system("pause"); return 0; } 来源: https://www.cnblogs.com/tiandsp/archive/2012/06/25/2561021.html

适配器模式

落爺英雄遲暮 提交于 2020-01-08 17:34:01
适配器模式(有时候也称包装样式或者包装)将一个类的接口适配成用户所期待的。目的是消除由于接口不匹配所造成类的兼容性问题。 主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式。 01、类的适配器模式 核心思想是:有一个Source类,拥有一个方法待适配,目标接口是Targetable,通过ClassAdapter类,将Source的功能扩展到Targetable里 Adapter类继承Source类,实现Targetable接口。 这样Targetable接口的实现类就具有了Source类的功能。 代码如下: Source类 public class Source { public void method1(){ System.out.println("This is original method1!"); } } Targetable类 public interface Targetable { /* 与原类中的方法相同 */ public void method1(); /* 新类的方法 */ public void method2(); } ClassAdapter类 public class ClassAdapter extends Source implements Targetable { public void method2() { System

适配器模式

ε祈祈猫儿з 提交于 2020-01-07 23:55:12
概念:把不同的接口封装成统一的api 实例: 这里以数据库连接为例 首先定义一个接口来约束数据库类必须实现的方法:DatabaseInterFace.php <?php namespace app; /** * 数据库连接接口 * Interface DatabaseInterFace * @package app */ interface DatabaseInterFace { /** * 数据库连接 * @param $host string 地址 * @param $user string 用户名 * @param $password string 密码 * @param $dbName string 数据库名 * @return mixed */ public function connect($host, $user, $password, $dbName); /** * 执行sql * @param $sql string 执行语句 * @return mixed */ public function query($sql); /** * 关闭数据库连接 * @return mixed */ public function close(); } 开始定义数据库连接类: 以Mysql.php为例 <?php namespace app\driver; /** *

Android 购物车功能的实现

寵の児 提交于 2020-01-01 23:39:14
首先,众所周知,ListView是Android最常用的控件,可以说是最简单的控件,也可以说是最复杂的控件。 作为一个Android初级开发者,可能会简单的ListView展示图文信息。 作为一个有一定项目开发经验的Android开发者来说,可能会遇到ListView的列表项中存在各种按钮的需求。 需求最多的就是购物车功能。想必大家都用过某宝某东客户端APP吧 ,就是那个购物车的功能。 ------------------------------------------------------------------------------------------------------------- 曾经做过购物车功能,今天项目需求也用到了差不多效果的购物车功能,刚好园友问了这个问题,便帮忙解答了。 之后,想了想还是写一下关于购物车效果的博客吧。 -------------------------------------------------------------------------------------------------------------- 那么现在就学习一下购物车功能的实现原理 首先让我们分析下实现购物车功能需要解决的问题: 1、在哪里处理按钮的点击响应事件,是适配器 还是 Activity或者Fragment 2、如何知道你点击的按钮是哪一个列表项中的

设计模式与代码的结构特性

倖福魔咒の 提交于 2019-12-31 01:04:23
适配器模式 适配器模式(Adapter Pattern):将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式 在适配器模式中,我们通过增加一个新的适配器类来解决接口不兼容的问题,使得原本没有任何关系的类可以协同工作。 根据适配器类与适配者类的关系不同,适配器模式可分为对象适配器和类适配器两种,在对象适配器模式中,适配器与适配者之间是关联关系;在类适配器模式中,适配器与适配者之间是继承(或实现)关系。 角色 Target (目标抽象类):目标抽象类定义客户所需接口,可以是一个抽象类或接口,也可以是具体类。 Adapte r(适配器类):适配器可以调用另一个接口,作为一个转换器,对Adaptee和Target进行适配,适配器类是适配器模式的核心,在对象适配器中,它通过继承Target并关联一个Adaptee对象使二者产生联系。 Adaptee (适配者类):适配者即被适配的角色,它定义了一个已经存在的接口,这个接口需要适配,适配者类一般是一个具体类,包含了客户希望使用的业务方法,在某些情况下可能没有适配者类的源代码 举例:定义一个手机充电的适配器 首先,定义一部手机 其次,定义手机充电的接口(相当于target) 再次,定义一个家用交流电220V电压(相当于adaptee)

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

五迷三道 提交于 2019-12-30 22:59:54
适配器模式的定义   适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。在适配器模式中,存在两种不同的模式结构:类的适配器模式和对象的适配器模式。 声明:java并不支持多重继承,及一个类只能有一个父类,本文给出的适配器模式的类图按照GOF著作分类属于对象适配器模式的类图,而不是类适配器的类图。 应用场景中的适用性 假设有一个洗衣机使用三孔插头,还有一个电视机使用双孔插头。 1、Target(目标抽象类):目标抽象类定义 客户所需接口 ,可以是一个抽象类或接口,也可以是具体类。 2、Adaptee(适配者类):适配者即被适配的角色,它定义了一个已经存在的接口,这个接口需要适配,适配者类一般是一个 具体类 ,包含了客户希望使用的业务方法。 3、Adapter(适配器类):通过包装一个需要适配的对象,把原接口转换成目标接口。 关键代码 package com.AdapterPattern; public abstract interface ThreeElectricOutlet { public abstract void connectElectricCurrent(); } package com.AdapterPattern; public abstract interface