DEV Community

Michel Moreira
Michel Moreira

Posted on

Padrão Proxy em Python

O Proxy é um padrão de projeto estrutural, este consiste em fornecer um substituto ou espaço reservado para outro objeto. Para chegar até o objeto original a requisição precisa passar por esta barreira criada pelo proxy, a barreira pode servir para controlar acesso a esse método, fazer algo antes ou depois da requisição chegar até ele.

Exemplo de código em Python

class Subject(ABC):

    @abstractmethod
    def request(self) -> None:
        pass

class RealSubject(Subject):

    def request(self) -> None:
        print("RealSubject: Handling request.")


class Proxy(Subject):

    def __init__(self, real_subject: RealSubject) -> None:
        self._real_subject = real_subject

    def request(self) -> None:

        if self.check_access():
            self._real_subject.request()
            self.log_access()

    def check_access(self) -> bool:
        print("Proxy: Checking access prior to firing a real request.")
        return True

    def log_access(self) -> None:
        print("Proxy: Logging the time of request.", end="")
Enter fullscreen mode Exit fullscreen mode

A classe Subject é uma interface que declara as operações comuns para as classes RealSubject e Proxy. Isso torna possível que o cliente consiga acesso aos métodos de RealSubject através do Proxy deixando aberta a possibilidade de trabalhar essa requisição da maneira que for necessária antes que ela chegue ao destino final.

A implementação em Python não tem nenhuma particularidade em relação a implementação em Java.


Referências
Padrões de Projeto (Diogo Moreira, 2020)
Mergulho nos Padrões de Projeto - v2020-1.14 (Alexander Shvets, 2020)
Os códigos usados como exemplo foram retirados do livro Mergulho nos Padrões de Projeto.

Top comments (0)