适配器模式
模式定义:将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。
模式结构:
- Target:目标抽象类
- Adapter:适配器类
- Adaptee:适配者类
- Client:客户类
显著的优点:一个适配器可以适配多个适配者到同一目标。
场景介绍:由于国内外插座标准不一,导致德国插座无法给我们充电。
python实现:
from abc import ABCMeta, abstractmethod class GermanySocketInterface(metaclass=ABCMeta): """德国插座标准""" @abstractmethod def circle_socket(self): """圆孔插座""" class ChinaSocketInterface(metaclass=ABCMeta): """国标插座标准""" @abstractmethod def rectangle_socket(self): """矩形插座""" class GermanySocket(GermanySocketInterface): def circle_socket(self): print("使用圆孔插座充电") class ChinaSocket(ChinaSocketInterface): def rectangle_socket(self): print("使用矩形插座充电") class GermanyHotel: """德国旅馆""" def __init__(self): pass def charging(self,GermanySocketInterfaceObj): self._GermanySocketInterfaceObj = GermanySocketInterfaceObj self._GermanySocketInterfaceObj.circle_socket() class SocketAdapter(GermanySocketInterface): """适配器""" def __init__(self,ChinaSocketInterfaceObj): self._ChinaSocketInterfaceObj = ChinaSocketInterfaceObj def circle_socket(self): self._ChinaSocketInterfaceObj.rectangle_socket() if __name__ == "__main__": # first # gs = GermanySocket() # gh = GermanyHotel() # gh.charging(gs) cs = ChinaSocket() gh = GermanyHotel() sa = SocketAdapter(cs) gh.charging(sa)