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="")
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)