设计模式(七): 通过转接头来观察"适配器模式"(Adapter Pattern)

在前面一篇博客中介绍了“命令模式”(Command Pattern),今天博客的主题是“适配器模式”(Adapter Pattern)。适配器模式用处还是比较多的,如果你对“适配器模式”理解呢,那么自然而然的就会知道其使用场景。今天这篇博客我们就举一个生活中的使用适配器模式的示例,然后将该示例使用代码进行表示出来,那么我们所实现的代码使用的设计模式就是我们今天所说的“适配器模式”。

“适配器”其实说白了就是一个转接头,比如Mac Book Pro 要接外接显示器,如果你没有HDMI传输线的话,那么你就得使用转接头作为中间件来连接外接显示器。你观察各种“转接头”他们都有一个共同的特点,就是转接头两端的接口肯定是不一样的。其实上面我说了句废话了,如果转接头的两端一致那么就是传输线了就不是转接头了。其实我们今天所要介绍的“适配器模式”就来源生活中的各种适配器。适配器说白了,其职责就是将一种接口转换成另一种接口。下方是生活中常见的适配器。

设计模式(七): 通过转接头来观察"适配器模式"(Adapter Pattern)

上面说这么多了,那么让我们来看一下“适配器模式”的定义吧,下方是适配器模式的定义:

适配器模式:将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间

接下来我们就拿生活中的一个示例来真正的感受一下适配器模式。作为一个Programer你肯定使用过笔记本电脑,在此就使用MacBook Pro的电源适配器来做类比。MacBook Pro中接入外接电源时需要电源适配器的,接下来我们就使用代码来实现插座,适配器以及MacBook Pro和其自带电池间的关系。

一、电源适配器中的类图

接下来我们将给出MacBook Pro电源适配器中的使用代码表示的类图,也就是我们使用“适配器模式”来设计电源适配器时所使用的类图。下方就是我们所使用的类图,总体看来下方的类图分为三个模块,左边的红框是我们的插座,中间的黄框是我们的电源适配器,右边的绿框就是我们经常使用的笔记本电脑了。在笔记本电脑中带有电池,MacBook Pro使用自带电池是不需要适配器的,因为该电池在设计之初就是为其设计的。但是如果MacBook Pro的电池没有电了,我们就需要为其接入外部电源。因为外部电源是多种多样的,电压电流都有所不同,不能直接给MacBook Pro供电,所以需要电源适配器来为MacBook Pro供电。下图中黄色的就是我们的电源适配器,也是适配器模式的核心。依次给出了每个模块的的介绍,如下所示:

在下方类图中的红色部分就是我们模拟插座的模块。在该模块中含有一个SocketType协议,该协议是Socket(插座)的一种规范,在此我们可以暂且理解为插座的国标。其中定义了插座的统一规范,只给出了声明没有实现(只给出了插座的尺寸,没有给出如何生产插座)。我们要实现的Socket都遵循于SocketType协议,也就是说在中国生产的插座要符合中国国标,在美国生产的插座当然要符合美国的国标,当然这两者的插座标准有可能是一样的。红框中就模拟了我们的插座。

接下来我们来看一下绿框中的内容。绿框中就是我们的MacBook Pro,其中也有个协议,名为ComputerPowerSourceType。该协议是笔记本电脑

上一篇:python – Subprocess.call或Subprocess.Popen不能使用PATH中的可执行文件(Linux / Windows)


下一篇:python-通过subprocess.check_output调用的可执行文件在控制台上打印,但未返回结果