介面卡模式可用作兩個不相容介面之間的橋樑。 這種型別的設計模式屬於結構模式,因為此模式結合了兩個獨立介面的功能。
這種模式涉及一個類,它負責連線獨立或不相容介面的功能。 一個現實的例子是讀卡器,它是儲存卡和膝上型電腦之間的介面卡。 您將儲存卡插入讀卡器,將讀卡器插入膝上型電腦,以便通過膝上型電腦讀取儲存卡。
介面卡設計模式有助於類能在一起工作。 它根據需求將一個類的介面轉換為另一個介面。 該模式包括一個多型性,它命名一個名稱和多個形式。 根據收集到的要求,生成一個使用的形狀類。
介面卡模式有兩種型別 -
現在讓我們看看如何實現介面卡模式。參考以下程式碼 -
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
介面,它實現所有屬性並將輸出顯示為可見。