设计模式(七): 通过转接头来观察"适配器模式"(Adapter Pattern)
在前面一篇博客中介绍了“命令模式”(Command Pattern),今天博客的主题是“适配器模式”(Adapter Pattern)。适配器模式用处还是比较多的,如果你对“适配器模式”理解呢,那么自然而然的就会知道其使用场景。今天这篇博客我们就举一个生活中的使用适配器模式的示例,然后将该示例使用代码进行表示出来,那么我们所实现的代码使用的设计模式就是我们今天所说的“适配器模式”。
“适配器”其实说白了就是一个转接头,比如Mac Book Pro 要接外接显示器,如果你没有HDMI传输线的话,那么你就得使用转接头作为中间件来连接外接显示器。你观察各种“转接头”他们都有一个共同的特点,就是转接头两端的接口肯定是不一样的。其实上面我说了句废话了,如果转接头的两端一致那么就是传输线了就不是转接头了。其实我们今天所要介绍的“适配器模式”就来源生活中的各种适配器。适配器说白了,其职责就是将一种接口转换成另一种接口。下方是生活中常见的适配器。

上面说这么多了,那么让我们来看一下“适配器模式”的定义吧,下方是适配器模式的定义:
适配器模式:将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间
接下来我们就拿生活中的一个示例来真正的感受一下适配器模式。作为一个Programer你肯定使用过笔记本电脑,在此就使用MacBook Pro的电源适配器来做类比。MacBook Pro中接入外接电源时需要电源适配器的,接下来我们就使用代码来实现插座,适配器以及MacBook Pro和其自带电池间的关系。
一、电源适配器中的类图
接下来我们将给出MacBook Pro电源适配器中的使用代码表示的类图,也就是我们使用“适配器模式”来设计电源适配器时所使用的类图。下方就是我们所使用的类图,总体看来下方的类图分为三个模块,左边的红框是我们的插座,中间的黄框是我们的电源适配器,右边的绿框就是我们经常使用的笔记本电脑了。在笔记本电脑中带有电池,MacBook Pro使用自带电池是不需要适配器的,因为该电池在设计之初就是为其设计的。但是如果MacBook Pro的电池没有电了,我们就需要为其接入外部电源。因为外部电源是多种多样的,电压电流都有所不同,不能直接给MacBook Pro供电,所以需要电源适配器来为MacBook Pro供电。下图中黄色的就是我们的电源适配器,也是适配器模式的核心。依次给出了每个模块的的介绍,如下所示:
在下方类图中的红色部分就是我们模拟插座的模块。在该模块中含有一个SocketType协议,该协议是Socket(插座)的一种规范,在此我们可以暂且理解为插座的国标。其中定义了插座的统一规范,只给出了声明没有实现(只给出了插座的尺寸,没有给出如何生产插座)。我们要实现的Socket都遵循于SocketType协议,也就是说在中国生产的插座要符合中国国标,在美国生产的插座当然要符合美国的国标,当然这两者的插座标准有可能是一样的。红框中就模拟了我们的插座。
接下来我们来看一下绿框中的内容。绿框中就是我们的MacBook Pro,其中也有个协议,名为ComputerPowerSourceType。该协议是笔记本电脑
设计模式(七): 通过转接头来观察"适配器模式"(Adapter Pattern)的更多相关文章
- 乐在其中设计模式(C#) - 适配器模式(Adapter Pattern)
原文:乐在其中设计模式(C#) - 适配器模式(Adapter Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 适配器模式(Adapter Pattern) 作者:webabc ...
- 【设计模式】适配器模式 Adapter Pattern
适配器模式在软件开发界使用及其广泛,在工业界,现实中也是屡见不鲜.比如手机充电器,笔记本充电器,广播接收器,电视接收器等等.都是适配器. 适配器主要作用是让本来不兼容的两个事物兼容和谐的一起工作.比如 ...
- 怎样让孩子爱上设计模式 —— 7.适配器模式(Adapter Pattern)
怎样让孩子爱上设计模式 -- 7.适配器模式(Adapter Pattern) 标签: 设计模式初涉 概念相关 定义: 适配器模式把一个类的接口变换成client所期待的还有一种接口,从而 使原本因接 ...
- 设计模式系列之适配器模式(Adapter Pattern)——不兼容结构的协调
模式概述 模式定义 模式结构图 模式伪代码 类适配器,双向适配器,缺省适配器 类适配器 双向适配器 缺省适配器 模式应用 模式在JDK中的应用 模式在开源项目中的应用 模式总结 主要优点 主要缺点 适 ...
- 二十四种设计模式:适配器模式(Adapter Pattern)
适配器模式(Adapter Pattern) 介绍将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作.示例有一个Message实体类 ...
- 设计模式 - 适配器模式(adapter pattern) 具体解释
适配器模式(adapter pattern) 详细解释 本文地址: http://blog.csdn.net/caroline_wendy 适配器模式(adapter pattern): 将一个类的接 ...
- 设计模式 - 适配器模式(adapter pattern) 枚举器和迭代器 具体解释
适配器模式(adapter pattern) 枚举器和迭代器 具体解释 本文地址: http://blog.csdn.net/caroline_wendy 參考适配器模式(adapter patter ...
- 适配器模式(Adapter Pattern)
适配器模式概述 定义:将一个类的接口转化成客户希望的另一个接口,适配器模式让那些接口不兼容的类可以一起工作.别名(包装器[Wrapper]模式) 它属于创建型模式的成员,何为创建型模式:就是关注如何将 ...
- 夜话JAVA设计模式之适配器模式(adapter pattern)
适配器模式:将一个类的接口,转换成客户期望的另一个接口,让不兼容的接口变成兼容. 1.类适配器模式:通过多重继承来实现适配器功能.多重继承就是先继承要转换的实现类,再实现被转换的接口. 2.对象适配器 ...
随机推荐
- TYPESDK手游聚合SDK服务端设计思路与架构之一:应用场景分析
TYPESDK 服务端设计思路与架构之一:应用场景分析 作为一个渠道SDK统一接入框架,TYPESDK从一开始,所面对的需求场景就是多款游戏,通过一个统一的SDK服务端,能够同时接入几十个甚至几百个各 ...
- 5.0 JS中引用类型介绍
其实,在前面的"js的六大数据类型"文章中稍微说了一下引用类型.前面我们说到js中有六大数据类型(五种基本数据类型 + 一种引用类型).下面的章节中,我们将详细讲解引用类型. 1. ...
- HttpPost过程中使用的URLEncoder.encode(something, encode)
URLEncoder.encode("刘美美", "utf-8").toString() = %E5%88%98%E7%BE%8E%E7%B ...
- Linux基础介绍【第八篇】
Linux网络基础 网线 568A 568B 线序:橙白橙 绿白蓝 蓝白绿 棕白棕 交换机.路由器 交换机:DLINK.H3C.CISCO 交换机(Switch)是一种用于电信号转发的网络设备.它可以 ...
- 解决Chrome 下载带半角分号出现net::ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_DISPOSITION的问题
方式一:添加双引号Response.AddHeader("content-disposition", "attachment; filename=\"" ...
- ASP.NET Aries 2.0 发布(原来的源码SVN已关闭,开源源码已迁移到GitHub)
主要更新: 1:增加子目录部署支持. 2:增加Taurus.MVC支持. 3:优化及Bug修复. 1:增加子目录部署支持: 其实在重写Aries框架的时候,我是去掉了目录部署功能的,主要是为了加快Ar ...
- Git 进阶指南(git ssh keys / reset / rebase / alias / tag / submodule )
在掌握了基础的 Git 使用 之后,可能会遇到一些常见的问题.以下是猫哥筛选总结的部分常见问题,分享给各位朋友,掌握了这些问题的中的要点之后,git 进阶也就完成了,它包含以下部分: 如何修改 ori ...
- iOS开发系列--数据存取
概览 在iOS开发中数据存储的方式可以归纳为两类:一类是存储为文件,另一类是存储到数据库.例如前面IOS开发系列-Objective-C之Foundation框架的文章中提到归档.plist文件存储, ...
- Fedora 22中的Locale and Keyboard Configuration
Introduction The system locale specifies the language settings of system services and user interface ...
- Web API 入门指南 - 闲话安全
Web API入门指南有些朋友回复问了些安全方面的问题,安全方面可以写的东西实在太多了,这里尽量围绕着Web API的安全性来展开,介绍一些安全的基本概念,常见安全隐患.相关的防御技巧以及Web AP ...