介面卡設計模式


介面卡模式可用作兩個不相容介面之間的橋樑。 這種型別的設計模式屬於結構模式,因為此模式結合了兩個獨立介面的功能。

這種模式涉及一個類,它負責連線獨立或不相容介面的功能。 一個現實的例子是讀卡器,它是儲存卡和膝上型電腦之間的介面卡。 您將儲存卡插入讀卡器,將讀卡器插入膝上型電腦,以便通過膝上型電腦讀取儲存卡。

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

介面卡模式有兩種型別 -

  • 物件介面卡模式 - 這種設計模式依賴於物件實現。 因此,它被稱為物件介面卡模式。
  • 類介面卡模式 - 這是實現介面卡設計模式的另一種方式。 該模式可以使用多重繼承來實現。

如何實現介面卡模式?

現在讓我們看看如何實現介面卡模式。參考以下程式碼 -

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

執行上面範例程式碼,得到以上結果 -

說明:程式碼包括具有各種引數和屬性的介面卡介面。 它包括AdapteeTarget介面,它實現所有屬性並將輸出顯示為可見。