O Facade é um padrão de projeto estrutural, a sua tradução significa fachada e é exatamente isso que se propõe a fazer. Este padrão consiste em fornecer uma interface simplificada para um conjunto complexo de classes.
Exemplo de código em Python
class Facade:
def __init__(self, subsystem1: Subsystem1, subsystem2: Subsystem2) -> None:
self._subsystem1 = subsystem1 or Subsystem1()
self._subsystem2 = subsystem2 or Subsystem2()
def operation(self) -> str:
results = []
results.append("Facade initializes subsystems:")
results.append(self._subsystem1.operation1())
results.append(self._subsystem2.operation1())
results.append("Facade orders subsystems to perform the action:")
results.append(self._subsystem1.operation_n())
results.append(self._subsystem2.operation_z())
return "\n".join(results)
A classe Facade fornecerá uma interface simples para um subsistema que contém muitas partes que trabalham entre si. Esta possuirá as funcionalidades essenciais que o sistema necessita para funcionar sem que seja necessário acessar as funções dentro das classes do subsistema, diminuindo com sucesso a acoplação entre elas.
class Subsystem1:
def operation1(self) -> str:
return "Subsystem1: Ready!"
# ...
def operation_n(self) -> str:
return "Subsystem1: Go!"
class Subsystem2:
def operation1(self) -> str:
return "Subsystem2: Get ready!"
# ...
def operation_z(self) -> str:
return "Subsystem2: Fire!"
def client_code(facade: Facade) -> None:
print(facade.operation(), end="")
As classes Subsystem1 e Subsystem2 são exemplos de subsistemas que terão suas funcionalidades implementadas pela interface. A classe client_code mostra como o cliente não precisará conhecer nada sobre os subsistemas para utilizá-los.
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)