适配器模式:将一个类的接口变成客户端期望的另外一种接口,从而是原本因为接口不匹配的类能够在一起工作。
适配器模式有两种实现方式:一种是组合的公式,一种是继承的方式
from abc import ABCMeta,abstractmethod
class SocketEntity:
def __init__(self,numOfPin,typeOfPin):
self.__numOfPin = numOfPin
self.__typeOfPin = typeOfPin
def getNumOfPin(self):
return self.__numOfPin
def setNumOfPin(self,numOfPin):
self.__numOfPin = numOfPin
def getTypeOfPin(self):
return self.__typeOfPin
def setTypeOfPin(self,typeOfPin):
self.__typeOfPin = typeOfPin
class ISocket(metaclass=ABCMeta):
def getName(self):
pass
def getSocket(self):
pass
class ChineseSocket(ISocket):
def getName(self):
return "中国插座"
def getSocket(self):
return SocketEntity(3,"扁型插头")
class EnglandSocket:
def name(self):
return "英国插座"
def socketInterface(self):
return SocketEntity(3,"T型插头")
class AdapterSocket(ISocket):
def __init__(self,englandSoct):
self.__englandSocket = englandSoct
def getName(self):
return self.__englandSocket.name() +"装换器"
def getSocket(self):
socket = self.__englandSocket.socketInterface()
socket.setTypeOfPin("扁型插头")
return socket
def canChargeDevice(name,socket):
if socket.getNumOfPin() == 3 and socket.getTypeOfPin() == "扁型插头":
isStandard = "符合"
canCharge="可以"
else:
isStandard = "不符合"
canCharge = "不能"
print("标准:%s,%s给中国电子设备充电"%(isStandard,canCharge))
def test():
chineseSocket = ChineseSocket()
canChargeDevice(chineseSocket.getName(),chineseSocket.getSocket())
englandSocket = EnglandSocket()
canChargeDevice(englandSocket.name(),englandSocket.socketInterface())
adapterSocket = AdapterSocket(englandSocket)
canChargeDevice(adapterSocket.getName(),adapterSocket.getSocket())
test()
运行结果:
标准:符合,可以给中国电子设备充电
标准:不符合,不能给中国电子设备充电
标准:符合,可以给中国电子设备充电
aaa