quinta-feira, 15 de abril de 2010

Façade/Facade [Design Pattern]

Façade

A idéia principal do Façade, é oferecer uma Interface única para o conjunto de interfaces de um subsistema.

Um problema clássico é: Em um determinado contexto, um cliente precisa saber muitos detalhes do Subsistema.


No cenário acima, o cliente tem acesso a todos os componentes do subsistema. E neste caso, o trabalho que ele teria seria absurdamente grande, pois, teria que conhecer todos os componentes, detalhadamente, e ter que controlar todos os acessos ‘no braço’, sem falar que, uma manutenção daria a maior dor de cabeça.

Com o uso do Façade, facilmente resolvemos este problema. Pois como já foi dito, ele oferece uma interface única para acesso ao subsistema, além de reduzir a complexidade da comunicação entre o cliente e as demais classes utilitárias.

Solução:


A estrutura apresentada, é bastante simples, a classe que construirá o Façade, deverá oferecer os recursos suficientes para que seus clientes possam usar o subsistema adequadamente, lembrando que, sem precisar de conhecer as interfaces de seus componentes.

Para este  padrão, existe inúmeras maneiras de representá-lo, mas o que importa mesmo, é que o cliente apenas utilize os objetos da classe façade, deixando toda a responsabilidade de acesso/manipulação aos outros componentes pra ela.

Pequeno Exemplo do Façade em Java.



Mas quais as vantagens de se utilizar este padrão?

    *  Proteger o cliente das complexidades dos componentes do subsistema
    * Acoplamento fraco, entre o subsistema e os clientes
    * Redução de dependências de compilação
    * Maior portabilidade

E para finalizar, Fachadas freqüentemente são implementadas como Singleton. (cenas para o próximo capítulo).

Um comentário: