Design Patterns - Proxy

1 h Niveau 10

Le design pattern proxy inclut un nouvel objet, qui est appelé "Proxy" à la place d'un objet existant qui est appelé "Real Subject". L'objet proxy créé du sujet réel doit être sur la même interface de telle sorte que le client ne puisse pas se douter que le proxy est utilisé à la place de l'objet réel. Les requêtes générées par le client vers le proxy sont transmises par le sujet réel.

Comment mettre en œuvre le modèle proxy ?

Voyons maintenant comment mettre en œuvre le modèle proxy.

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

Résultat

logo discord

Besoin d'aide ?

Rejoignez notre communauté officielle et ne restez plus seul à bloquer sur un problème !

En savoir plus