適配器設計模式

適配器模式可用作兩個不兼容接口之間的橋樑。 這種類型的設計模式屬於結構模式,因爲此模式結合了兩個獨立接口的功能。

這種模式涉及一個類,它負責連接獨立或不兼容接口的功能。 一個現實的例子是讀卡器,它是存儲卡和筆記本電腦之間的適配器。 您將存儲卡插入讀卡器,將讀卡器插入筆記本電腦,以便通過筆記本電腦讀取存儲卡。

適配器設計模式有助於類能在一起工作。 它根據需求將一個類的接口轉換爲另一個接口。 該模式包括一個多態性,它命名一個名稱和多個形式。 根據收集到的要求,生成一個使用的形狀類。

適配器模式有兩種類型 -

  • 對象適配器模式 - 這種設計模式依賴於對象實現。 因此,它被稱爲對象適配器模式。
  • 類適配器模式 - 這是實現適配器設計模式的另一種方式。 該模式可以使用多重繼承來實現。

如何實現適配器模式?

現在讓我們看看如何實現適配器模式。參考以下代碼 -

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接口,它實現所有屬性並將輸出顯示爲可見。