适配器模式
模式定义:将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作,其别名为包装器(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)

浙公网安备 33010602011771号