Python 設計模式 - 介面卡模式



介面卡模式作為連線兩個不相容介面的橋樑。這種設計模式屬於結構型模式,因為它組合了兩個獨立介面的功能。

此模式涉及單個類,負責連線獨立或不相容介面的功能。現實生活中的例子可能是讀卡器,它充當記憶體卡和筆記型電腦之間的介面卡。您將記憶體卡插入讀卡器,然後將讀卡器插入筆記型電腦,以便可以透過筆記型電腦讀取記憶體卡。

介面卡設計模式有助於使類一起工作。它根據需要將類的介面轉換為另一個介面。該模式包括一個物種多型性,它命名一個名稱和多種形式。例如,形狀類可以根據收集的要求使用。

介面卡模式有兩種型別:

物件介面卡模式

此設計模式依賴於物件實現。因此,它被稱為物件介面卡模式。

類介面卡模式

這是實現介面卡設計模式的另一種方法。可以使用多重繼承來實現此模式。

如何實現介面卡模式?

現在讓我們看看如何實現介面卡模式。

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()

輸出

上述程式生成以下輸出:

Adapter Pattern

解釋

程式碼包括具有各種引數和屬性的介面卡介面。它包括Adaptee以及實現所有屬性並顯示輸出為可見的Target介面。

廣告