GOF23设计模式之适配器模式(Adapter)
一、适配器模式概述
将一个类的接口转换成客户可用的另外一个接口。
将原本不兼容不能在一起工作的类添加适配处理类,使其可以在一起工作。
二、适配器模式场景
要想只有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)的更多相关文章
- GOF23设计模式之适配器模式
GOF23设计模式之适配器模式 结构型模式: 核心作用:是从程序的结构上实现松耦合,从而可以扩大整体的类结构,用来解决更大的问题. 分类:适配器模式.代理模式.桥接模式.装饰模式.组合模式.外观模式. ...
- 乐在其中设计模式(C#) - 适配器模式(Adapter Pattern)
原文:乐在其中设计模式(C#) - 适配器模式(Adapter Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 适配器模式(Adapter Pattern) 作者:webabc ...
- 8.3 GOF设计模式二: 适配器模式 Adapter
GOF设计模式二: 适配器模式 Adapter 为中国市场生产的电器,到了美国,需要有一个转接器才能使用墙上的插座,这个转接 器的功能.原理?复习单实例模式 SingleTon的三个关键点 ...
- 怎样让孩子爱上设计模式 —— 7.适配器模式(Adapter Pattern)
怎样让孩子爱上设计模式 -- 7.适配器模式(Adapter Pattern) 标签: 设计模式初涉 概念相关 定义: 适配器模式把一个类的接口变换成client所期待的还有一种接口,从而 使原本因接 ...
- 【GOF23设计模式】适配器模式
来源:http://www.bjsxt.com/ 一.[GOF23设计模式]_适配器模式.对象适配器.类适配器.开发中场景 适配器模式 笔记本电脑只有USB接口,新买的键盘是PS2接口的,需要用适 ...
- 二十四种设计模式:适配器模式(Adapter Pattern)
适配器模式(Adapter Pattern) 介绍将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作.示例有一个Message实体类 ...
- 【设计模式】适配器模式 Adapter Pattern
适配器模式在软件开发界使用及其广泛,在工业界,现实中也是屡见不鲜.比如手机充电器,笔记本充电器,广播接收器,电视接收器等等.都是适配器. 适配器主要作用是让本来不兼容的两个事物兼容和谐的一起工作.比如 ...
- Java设计模式之适配器模式(Adapter)
转载:<JAVA与模式>之适配器模式 这个总结的挺好的,为了加深印象,我自己再尝试总结一下 1.定义: 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法 ...
- JavaScript设计模式 Item9 --适配器模式Adapter
适配器模式(转换器面模式),通常是为要使用的接口,不符本应用或本系统使用,而需引入的中间适配层类或对象的情况. 适配器模式的作用是解决两个软件实体间的接口不兼容的问题. 一.定义 适配器模式(Adap ...
随机推荐
- 使用Unity创建塔防游戏(Part3)—— 项目总结
之前我们完成了使用Unity创建塔防游戏这个小项目,在这篇文章里,我们对项目中学习到的知识进行一次总结. Part1的地址:http://www.cnblogs.com/lcxBlog/p/60759 ...
- Week12《java程序设计》第12次作业总结
Week12<java程序设计>第12次作业总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 面向系统综合设计-图书馆管理系统或购物车 ...
- Python中的数据结构 --- 列表(list)
列表(list)是Python中最基本的.最常用的数据结构(相当于C语言中的数组,与C语言不同的是:列表可以存储任意数据类型的数据). 列表中的每一个元素分配一个索引号,且索引的下标是从0开始. ...
- 起thread时,运行报错terminate called without an active exception
I am getting a C++ error with threading: terminate called without an active exception Aborted How to ...
- 《Unity 3D游戏客户端基础框架》消息系统
功能分析: 首先,我们必须先明确一个消息系统的核心功能: 一个通用的事件监听器 管理各个业务监听的事件类型(注册和解绑事件监听器) 全局广播事件 广播事件所传参数数量和数据类型都是可变的(数量可以是 ...
- LXC、LXD、Docker的区别与联系(by quqi99)
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 ( http://blog.csdn.net/quqi99 ) 容器 namespace技术用来进行做进程间的隔 ...
- Okhttp之RouteSelector简单解析
继前面的几篇OKhttp的拦截器简单分析之后,对于后续Okhttp之间的分析自己也着实琢磨了一段时间,是分析RealConnection?还是ConnectionPool,随着对Okhttp源码的深入 ...
- Swift中的本地化实现
1. 确保localization中添加了多语言2. 添加localisable.strings文件 3.选择这个文件,勾选多语言即可4.打开localisable.strings文件,添加一些测试字 ...
- Python 中的 if __name__ == '__main__'
__name__ 是当前模块名,当模块被直接运行时模块名为 __main__ .这句话的意思就是,当模块被直接运行时,以下代码块将被运行,当模块是被导入时,代码块不被运行. 先来个小栗子: 先创建一个 ...
- learn Linux sed command
learn Linux sed command 一.参考文档: . sed命令详解 http://qifuguang.me/2015/09/21/sed%E5%91%BD%E4%BB%A4%E8%AF ...