Python Tasarım Modelleri - Bağdaştırıcı

Bağdaştırıcı modeli, iki uyumsuz arabirim arasında bir köprü görevi görür. Bu model, iki bağımsız arayüzün kapasitesini birleştirdiğinden, bu tür bir tasarım modeli yapısal modele girer.

Bu model, bağımsız veya uyumsuz arayüzlerin işlevlerini birleştirmekten sorumlu tek bir sınıfı içerir. Gerçek hayattan bir örnek, hafıza kartı ile dizüstü bilgisayar arasında adaptör görevi gören bir kart okuyucu durumu olabilir. Hafıza kartını kart okuyucuya ve kart okuyucuyu dizüstü bilgisayara takarsınız, böylece hafıza kartı dizüstü bilgisayar üzerinden okunabilir.

Adaptör tasarım modeli, sınıfların birlikte çalışılmasına yardımcı olur. Bir sınıfın arayüzünü ihtiyaca göre başka bir arayüze dönüştürür. Model, bir tür, bir adı ve birden çok formu adlandıran bir polimorfizm içerir. Toplanan gereksinimlere göre kullanılabilecek bir şekil sınıfı için söyleyin.

İki tür adaptör modeli vardır -

Nesne Bağdaştırıcı Deseni

Bu tasarım modeli, nesne uygulamasına dayanır. Bu nedenle buna Nesne Adaptör Modeli denir.

Sınıf Adaptör Modeli

Bu, adaptör tasarım modelini uygulamanın alternatif bir yoludur. Model, çoklu miras kullanılarak uygulanabilir.

Adaptör modeli nasıl uygulanır?

Şimdi adaptör modelinin nasıl uygulanacağını görelim.

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

Çıktı

Yukarıdaki program aşağıdaki çıktıyı üretir -

Açıklama

Kod, çeşitli parametreler ve niteliklere sahip adaptör arabirimini içerir. Tüm öznitelikleri uygulayan ve çıktıyı görünür olarak görüntüleyen Hedef arabirimiyle birlikte Adaptee'yi içerir.