适配器

适配器用于将一个类暴露出的接口转换成所希望的接口,主要用于使原本因为接口不兼容的类能够协同工作。

假如有以下一个类。

class Car:
	def __init__(self):
		self.name = "car"
	
	def horn(self):
		return "WoWo"

但是我们希望像下面这样进行调用。

def main():
	print("{0} can {1}".format(something.name, somgthing.make_noise()))

但是可以看到,类Car中是没有make_noise()方法的,所以需要定义下面这样一个适配器类来完成所期望的使用方式。

class Adapter(object):
	def __init(self, obj, adapted_method):
		self.obj = obj
		self.__dict__.update(adapted_methods)
	
	def __getattr__(self, attr):
		return getattr(self.obj, attr)


def main():
	vehicle = Car()
	something = Adapter(vehicle, dict(make_noise=horn))
	print("{0} can {1}".format(something.name, somgthing.make_noise()))