適配器設計模式
適配器模式可用作兩個不兼容接口之間的橋樑。 這種類型的設計模式屬於結構模式,因爲此模式結合了兩個獨立接口的功能。
這種模式涉及一個類,它負責連接獨立或不兼容接口的功能。 一個現實的例子是讀卡器,它是存儲卡和筆記本電腦之間的適配器。 您將存儲卡插入讀卡器,將讀卡器插入筆記本電腦,以便通過筆記本電腦讀取存儲卡。
適配器設計模式有助於類能在一起工作。 它根據需求將一個類的接口轉換爲另一個接口。 該模式包括一個多態性,它命名一個名稱和多個形式。 根據收集到的要求,生成一個使用的形狀類。
適配器模式有兩種類型 -
- 對象適配器模式 - 這種設計模式依賴於對象實現。 因此,它被稱爲對象適配器模式。
- 類適配器模式 - 這是實現適配器設計模式的另一種方式。 該模式可以使用多重繼承來實現。
如何實現適配器模式?
現在讓我們看看如何實現適配器模式。參考以下代碼 -
class EuropeanSocketInterface:
def voltage(self): pass
def live(self): pass
def neutral(self): pass
def earth(self): pass
# Adaptee
class Socket(EuropeanSocketInterface):
def voltage(self):
return 230
def live(self):
return 1
def neutral(self):
return -1
def earth(self):
return 0
# Target interface
class USASocketInterface:
def voltage(self): pass
def live(self): pass
def neutral(self): pass
# The Adapter
class Adapter(USASocketInterface):
__socket = None
def __init__(self, socket):
self.__socket = socket
def voltage(self):
return 110
def live(self):
return self.__socket.live()
def neutral(self):
return self.__socket.neutral()
# Client
class ElectricKettle:
__power = None
def __init__(self, power):
self.__power = power
def boil(self):
if self.__power.voltage() > 110:
print "Kettle on fire!"
else:
if self.__power.live() == 1 and \
self.__power.neutral() == -1:
print "Coffee time!"
else:
print "No power."
def main():
# Plug in
socket = Socket()
adapter = Adapter(socket)
kettle = ElectricKettle(adapter)
# Make coffee
kettle.boil()
return 0
if __name__ == "__main__":
main()
執行上面示例代碼,得到以上結果 -
說明:代碼包括具有各種參數和屬性的適配器接口。 它包括Adaptee
和Target
接口,它實現所有屬性並將輸出顯示爲可見。