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.