设计模式—适配器模式

来源:互联网 发布:tgp优化 编辑:程序博客网 时间:2024/05/16 12:44

  今天趁热打铁继续写,今天梳理的是适配器模式。

  一如既往先给出度娘的解释:在计算机编程中,适配器模式(有时候也称包装样式或者包装)将一个类的接口适配成用户所期待的。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。

 

  那么,什么意思呢?我们先从字面脑补一下什么是适配器。举一个生活中的例子:我手机没电了,我想要去充电,但是插座上的电压是220V的交流电,手机第一接头口径对不上,即便对上了,电压也是太大,频率也不对。所以我需要适配我手机的充电器,将电压转换成我需要的适合我手机的。这就是适配器出现的初衷,把用户所想要的和现实的类串接起来,已达到适配的目的。

 

  但是适配器模式如果实现起来,他的方式多样。首先我们可以同时构造普通目标类(电脑充电模式)和适配器类(手机充电模式),让适配器同时继承适配器类和普通目标类(python,C++可以多重继承,java继承接口)。这样当我只有一个电源口的时候,我想给电脑充电就调用适配器类中的普通目标类的方法。如果我想给手机充电我就调用适配器类的方法。这一个例子的类图如下:

                                                      

 

  在python中一般用到了第二种方式,是用委托的方式。什么意思呢?这个方式叫做适配器对象。它不是使用多继承或继承再实现的方式,而是使用直接关联。同适配器类一样给出关于适配器类的类图:

                                                      

 

 

  最后也要动动手,编一下看看~给出Python的一种实现:

class target:    def service(self):        passclass adapter(target):    def __init__(self,adaptee):        self.adaptee=adaptee    def service(self):        self.adaptee.service()class adaptee:    def service(self):        print 'service in different way~'if __name__=='__main__':    my_requests=adapter(adaptee())    my_requests.service()

  是不是很简单呢~哈哈自己也试一试吧~

0 0