(十)python 设计模式 --- 适配器模式

背景

  • 当我们把异构组件用于另一个系统中,不对代码进行任何修改的仍然能进行通信的情况很少见。但又并非总是能修改该组件代码。如果是外部提供的组件,修改代码也不切实际。此时我们可以编写一个额外的代码层,该代码层让异构组件接口和调用端结构能够通信。
  • 适配器模式(Adapter pattern) 结构性设计模式,帮助我们实现不兼容接口之间的兼容

原则

  • 不要求访问他方接口的源代码
  • 不违反开放/封闭原则

实例

# -*-encoding:utf8 -*-

class Module1(object):

    def handle1(self):
        """
        handle1
        """
        print(self.__class__.__name__, 'handle1')

class Module2(object):

    def handle2(self):
        """
        handle1
        """
        print(self.__class__.__name__, 'handle2')

class Module3(object):

    def handle3(self):
        """
        handle1
        """
        print(self.__class__.__name__, 'handle3')

class Adapter(object):

    def __init__(self, obj, adapter_methods):
        self.obj = obj
        self.__dict__.update(adapter_methods)


def run(mod_objs):

    for mod in mod_objs:
        mod.execute()


if __name__ == '__main__':
    mod1 = Module1()
    ad_mod1 = Adapter(mod1, dict(execute=mod1.handle1))
    mod2 = Module2()
    ad_mod2 = Adapter(mod2, dict(execute=mod2.handle2))
    mod3 = Module3()
    ad_mod3 = Adapter(mod3, dict(execute=mod3.handle3))
    run(
        [ad_mod1, ad_mod2, ad_mod3]
    )

你可能感兴趣的:(python高级编程)