在前面一篇博客中介绍了“命令模式”(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)的更多相关文章

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

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

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

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

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

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

  4. 设计模式系列之适配器模式(Adapter Pattern)——不兼容结构的协调

    模式概述 模式定义 模式结构图 模式伪代码 类适配器,双向适配器,缺省适配器 类适配器 双向适配器 缺省适配器 模式应用 模式在JDK中的应用 模式在开源项目中的应用 模式总结 主要优点 主要缺点 适 ...

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

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

  6. 设计模式 - 适配器模式(adapter pattern) 具体解释

    适配器模式(adapter pattern) 详细解释 本文地址: http://blog.csdn.net/caroline_wendy 适配器模式(adapter pattern): 将一个类的接 ...

  7. 设计模式 - 适配器模式(adapter pattern) 枚举器和迭代器 具体解释

    适配器模式(adapter pattern) 枚举器和迭代器 具体解释 本文地址: http://blog.csdn.net/caroline_wendy 參考适配器模式(adapter patter ...

  8. 适配器模式(Adapter Pattern)

    适配器模式概述 定义:将一个类的接口转化成客户希望的另一个接口,适配器模式让那些接口不兼容的类可以一起工作.别名(包装器[Wrapper]模式) 它属于创建型模式的成员,何为创建型模式:就是关注如何将 ...

  9. 夜话JAVA设计模式之适配器模式(adapter pattern)

    适配器模式:将一个类的接口,转换成客户期望的另一个接口,让不兼容的接口变成兼容. 1.类适配器模式:通过多重继承来实现适配器功能.多重继承就是先继承要转换的实现类,再实现被转换的接口. 2.对象适配器 ...

随机推荐

  1. SQL Server镜像自动生成脚本

    SQL Server镜像自动生成脚本 镜像的搭建非常繁琐,花了一点时间写了这个脚本,方便大家搭建镜像 执行完这个镜像脚本之后,最好在每台机器都绑定一下hosts文件,不然的话,镜像可能会不work 1 ...

  2. Android 判断一个 View 是否可见 getLocalVisibleRect(rect) 与 getGlobalVisibleRect(rect)

    Android 判断一个 View 是否可见 getLocalVisibleRect(rect) 与 getGlobalVisibleRect(rect) [TOC] 这两个方法的区别 View.ge ...

  3. [APUE]系统数据文件与信息

    一.口令文件 UNIX口令文件包含下表中的各个字段,这些字段包含在 由于历史原因,口令文件是/bin/passwd,而且是一个文本文件,每一行都包括了上表中的七个字段,字段之间用":&quo ...

  4. 使用cmake自动构建工程

    公司引擎是用cmake根据目标平台来构建工程的,刚接触的时候深深体会到cmake的方便:如果目标平台是windows,它可以帮你自动构建出vs工程:如果是安卓,自动构建出eclipse工程,如果是IO ...

  5. css居中div的几种常用方法

    在开发过程中,很多需求需要我们居中一个div,比如html文档流当中的一块div,比如弹出层内容部分这种脱离了文档流等.不同的情况有不同的居中方式,接下来就分享下一下几种常用的居中方式. 1.text ...

  6. Openfiler配置RAC共享存储

    将 Openfiler 用作 iSCSI 存储服务器,主要操作步骤如下: 1.设置 iSCSI 服务 2.配置网络访问 3.指定物理存储器并对其分区 4.创建新的卷组 5.创建所有逻辑卷 6.为每个逻 ...

  7. 接口--interface

    “interface”(接口)关键字使抽象的概念更深入了一层.我们可将其想象为一个“纯”抽象类.它允许创建者规定一个类的基本形式:方法名.自变量列表以及返回类型,但不规定方法主体.接口也包含了基本数据 ...

  8. C# 对象实例化 用json保存 泛型类 可以很方便的保存程序设置

    参考页面: http://www.yuanjiaocheng.net/webapi/test-webapi.html http://www.yuanjiaocheng.net/webapi/web-a ...

  9. ThinkPHP 模板substr的截取字符串函数

    ThinkPHP 模板substr的截取字符串函数在Common/function.php加上以下代码 /** ** 截取中文字符串 **/ function msubstr($str, $start ...

  10. 基于Vue2.0的单页面开发方案

    2016的最后一天,多多少少都应该总结一下这一年的得失,哪里做的好,哪里需要改进,记一笔,或许将来会用到呢. 毕业差不多半年了,一直是一个人在负责公司项目的前端开发与维护,当时公司希望前后端分离,提高 ...