Python Tasarım Modelleri - Proxy
Proxy tasarım deseni, "Gerçek Özne" olarak adlandırılan mevcut bir nesnenin yerine "Proxy" adı verilen yeni bir nesne içerir. Gerçek özneden oluşturulan proxy nesnesi, istemcinin gerçek nesne yerine proxy kullanıldığına dair herhangi bir fikir almaması için aynı arayüzde olmalıdır. Müşteri tarafından vekile yapılan talepler gerçek konu üzerinden iletilir.
Proxy modelinin UML gösterimi aşağıdaki gibidir -
Proxy modeli nasıl uygulanır?
Şimdi proxy modelinin nasıl uygulanacağını görelim.
class Image:
def __init__( self, filename ):
self._filename = filename
def load_image_from_disk( self ):
print("loading " + self._filename )
def display_image( self ):
print("display " + self._filename)
class Proxy:
def __init__( self, subject ):
self._subject = subject
self._proxystate = None
class ProxyImage( Proxy ):
def display_image( self ):
if self._proxystate == None:
self._subject.load_image_from_disk()
self._proxystate = 1
print("display " + self._subject._filename )
proxy_image1 = ProxyImage ( Image("HiRes_10Mb_Photo1") )
proxy_image2 = ProxyImage ( Image("HiRes_10Mb_Photo2") )
proxy_image1.display_image() # loading necessary
proxy_image1.display_image() # loading unnecessary
proxy_image2.display_image() # loading necessary
proxy_image2.display_image() # loading unnecessary
proxy_image1.display_image() # loading unnecessary
Çıktı
Yukarıdaki program aşağıdaki çıktıyı üretir -
Proxy desen tasarımı, oluşturduğumuz görüntülerin kopyalanmasına yardımcı olur. Display_image () işlevi, değerlerin komut isteminde yazdırılıp yazdırılmadığını kontrol etmeye yardımcı olur.