一、适配器模式概述

  将一个类的接口转换成客户可用的另外一个接口。

  将原本不兼容不能在一起工作的类添加适配处理类,使其可以在一起工作。

二、适配器模式场景

  要想只有USB接口的电脑想使用PS/2接口的键盘,必须使用PS/2转USB的适配器。

三、适配器模式示例

  (1)定义USB接口

 /**
* 客户所期待的接口(相当于USB接口)
* @author CL
*
*/
public interface Target { void handleReq(); }

  (2)定义PS/2键盘

 /**
* 被适配的类 (相当于例子中的PS/2键盘)
* @author CL
*
*/
public class Adaptee { public void request() {
System.out.println("我是PS/2接口的键盘!");
} }

  (3)定义PS/2转USB的适配器

  a. 类适配器

 /**
* 适配器(相当于可以将PS/2接口转换成USB接口的适配器本身)
* 类适配器方式
* @author CL
*
*/
public class Adapter extends Adaptee implements Target { public void handleReq() {
super.request();
} }

  测试:

 /**
* 客户端类(相当于只能识别USB接口键盘的电脑)
* @author CL
*
*/
public class Client { public void test(Target t) {
t.handleReq();
} public static void main(String[] args) {
Client c = new Client();
Adaptee a = new Adaptee(); Target t = new Adapter(); //类适配器方式 c.test(t);
} }

  控制台输出:

我是PS/2接口的键盘!

  b.对象适配器

 /**
* 适配器(相当于可以将PS/2接口转换成USB接口的适配器本身)
* 对象适配器方式,使用了组合的方式跟被适配对象整合
* @author CL
*
*/
public class Adapter implements Target { private Adaptee adaptee; public Adapter(Adaptee adaptee) {
this.adaptee = adaptee;
} public void handleReq() {
adaptee.request();
} }

  测试:

 /**
* 客户端类(相当于只能识别USB接口键盘的电脑)
* @author CL
*
*/
public class Client { public void test(Target t) {
t.handleReq();
} public static void main(String[] args) {
Client c = new Client();
Adaptee a = new Adaptee(); Target t = new Adapter3(); //类适配器方式 c.test(t);
} }

  控制台输出:

我是PS/2接口的键盘!

GOF23设计模式之适配器模式(Adapter)的更多相关文章

  1. GOF23设计模式之适配器模式

    GOF23设计模式之适配器模式 结构型模式: 核心作用:是从程序的结构上实现松耦合,从而可以扩大整体的类结构,用来解决更大的问题. 分类:适配器模式.代理模式.桥接模式.装饰模式.组合模式.外观模式. ...

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

    原文:乐在其中设计模式(C#) - 适配器模式(Adapter Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 适配器模式(Adapter Pattern) 作者:webabc ...

  3. 8.3 GOF设计模式二: 适配器模式 Adapter

    GOF设计模式二: 适配器模式 Adapter  为中国市场生产的电器,到了美国,需要有一个转接器才能使用墙上的插座,这个转接 器的功能.原理?复习单实例模式  SingleTon的三个关键点  ...

  4. 怎样让孩子爱上设计模式 —— 7.适配器模式(Adapter Pattern)

    怎样让孩子爱上设计模式 -- 7.适配器模式(Adapter Pattern) 标签: 设计模式初涉 概念相关 定义: 适配器模式把一个类的接口变换成client所期待的还有一种接口,从而 使原本因接 ...

  5. 【GOF23设计模式】适配器模式

    来源:http://www.bjsxt.com/ 一.[GOF23设计模式]_适配器模式.对象适配器.类适配器.开发中场景  适配器模式  笔记本电脑只有USB接口,新买的键盘是PS2接口的,需要用适 ...

  6. 二十四种设计模式:适配器模式(Adapter Pattern)

    适配器模式(Adapter Pattern) 介绍将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作.示例有一个Message实体类 ...

  7. 【设计模式】适配器模式 Adapter Pattern

    适配器模式在软件开发界使用及其广泛,在工业界,现实中也是屡见不鲜.比如手机充电器,笔记本充电器,广播接收器,电视接收器等等.都是适配器. 适配器主要作用是让本来不兼容的两个事物兼容和谐的一起工作.比如 ...

  8. Java设计模式之适配器模式(Adapter)

    转载:<JAVA与模式>之适配器模式 这个总结的挺好的,为了加深印象,我自己再尝试总结一下 1.定义: 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法 ...

  9. JavaScript设计模式 Item9 --适配器模式Adapter

    适配器模式(转换器面模式),通常是为要使用的接口,不符本应用或本系统使用,而需引入的中间适配层类或对象的情况. 适配器模式的作用是解决两个软件实体间的接口不兼容的问题. 一.定义 适配器模式(Adap ...

随机推荐

  1. http请求的GET和POST请求:查询和新增(server.php)

    <?php //设置页面内容是html编码格式是utf-8 header("Content-Type: text/plain;charset=utf-8"); //heade ...

  2. C#_串口通信_SerialPort_一个最基础的串口程序

    一个最最基础的 串口通信 程序!!! 最近正在学c#_还不是很熟悉_只是有点java的基础 SerialPort类 的介绍 http://msdn.microsoft.com/zh-cn/librar ...

  3. poj3656

    题解: 二分图最大匹配 根据三角形不等式 直接上最大匹配即可 注意编圈取相反数 代码: #include<iostream> #include<algorithm> #incl ...

  4. 怎样安装 OpenJDK 8 in Ubuntu 14.04 & 12.04 LTS

    OpenJDK Java 8 has been made into official Ubuntu repositories for 14.10 Utopic and higher. For Ubun ...

  5. MBProgressHUD基础用法

    MBProgressHUD版本号:0.9.2以前用MBProgressHUD用得挺好的,基本上 - (void)showAnimated:(BOOL)animated whileExecutingBl ...

  6. va_start、va_arg、va_end、va_copy 可变参函数

    1.应用与原理         在C语言中,有时我们无法给出一个函数参数的列表,比如: int printf(const char *format, ...); int fprintf(FILE *s ...

  7. 20165202 2017-2018-2 《Java程序设计》第8周学习总结

    20165202 2017-2018-2 <Java程序设计>第8周学习总结 教材学习内容总结 Ch12 进程与线程 线程是比进程更小的单位,一个进程在其执行过程中,可以产生多个线程 Ja ...

  8. Python中的数据结构 --- 元组(tuple)、字典(tuple)

       元组(tuple)本身是不可变数据类型,没有增删改查:元组内可以存储任意数据类型一.元组的创建 例:t = (1,2.3,'star',[1,2,3])      ## 元组里面包含可变类型,故 ...

  9. mac svn: E210004: Number is larger than maximum

    SVN服务器IP地址发现改变,在Eclipse中的SVN资源库中执行Relocate重定位时发生错误: mac svn: E210004: Number is larger than maximum ...

  10. java android 读写三菱PLC 使用TCP/IP 协议

    本文将使用一个Github开源的组件库技术来读写三菱PLC和西门子plc数据,使用的是基于以太网的TCP/IP实现,不需要额外的组件,读取操作只要放到后台线程就不会卡死线程,本组件支持超级方便的高性能 ...