适配器模式(Adapter Pattern):将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。
# -*- coding:utf-8 -*- class A: def a(self): print(‘in A--a‘) class B: def b(self): print(‘in B--b‘) class C: def c(self): print(‘in C--c‘) class Adapter: def __init__(self, classname, method): self.classname = classname self.__dict__.update(method) def test(): ‘‘‘定义多个适配器对象,并给适配器增加属性test,对应一个原始类的一个属性‘‘‘ objects = list() ‘‘‘定义一个适配器,将类A的方法a赋予这个适配器‘‘‘ obj_a = A() objects.append(Adapter(obj_a, dict(test=obj_a.a))) ‘‘‘定义一个适配器,将类B的方法b赋予这个适配器‘‘‘ obj_b = B() objects.append(Adapter(obj_b, dict(test=obj_b.b))) ‘‘‘定义一个适配器,将类C的方法c赋予这个适配器‘‘‘ obj_c = C() objects.append(Adapter(obj_c, dict(test=obj_c.c))) for obj in objects: print(obj.__dict__) #调用所有适配器中的test方法,就会实现调用类A中的a方法,类B中的b方法,类C中的c方法的效果 obj.test() test()
结果:
{‘classname‘: <__main__.A object at 0x00000000021B7860>, ‘test‘: <bound method A.a of <__main__.A object at 0x00000000021B7860>>}
in A--a
{‘classname‘: <__main__.B object at 0x00000000021B78D0>, ‘test‘: <bound method B.b of <__main__.B object at 0x00000000021B78D0>>}
in B--b
{‘classname‘: <__main__.C object at 0x00000000021B7940>, ‘test‘: <bound method C.c of <__main__.C object at 0x00000000021B7940>>}
in C--c
原文:https://www.cnblogs.com/dxnui119/p/11953039.html