Qual a real função da fachada

Olá pessoal.

Hoje a tarde estávamos almoçando quando surgiu uma duvida simples e que causou bastante polemica na hora sagrada da refeição. Cada um respondeu de uma forma a uma simples pergunta… Agora pra tirar nossas conclusões, gostaríamos que vcs nos ajudassem.

Pergunta: QUAL A REAL FUNÇÃO DA FACHADA ???

Após obtermos uma conclusão concreta rsrsrsr relataremos aqui pra todos.

Abraços,
Rulio Vangellis.

Beleza?

Como o próprio nome já diz só serve de fachada, eeheheheh.
Brincadeira. Serve pra dividir de forma mais eficiente as camadas porque, oculta de forma eficiente todos os detalhes de implementação de uma camada pra outra.

A Fachada (Façade) é um Design Patter muito usado, pois como nosso amigo falou anteriormente ele isola detalhes de implementação da camada de negócio, e completando, fornece uma interface mais símples e mais granular (passagem de objetos) á camada de negócio.

A implementação comum de Façade é usando Stateless Session Beans:
http://java.sun.com/blueprints/corej2eepatterns/Patterns/SessionFacade.html

Bom estudo

Quando os GoF escreveram:

Façade: “Fornecer uma interface unificada para um conjunto de interfaces de um subsistema. O Façade define uma interface de mais alto nível, tornando assim mais fácil utilizar o subsistema”

[quote]ozielneto disse:
A Fachada (Façade) é um Design Patter muito usado, pois como nosso amigo falou anteriormente ele isola detalhes de implementação da camada de negócio, e completando, fornece uma interface mais símples e mais granular (passagem de objetos) á camada de negócio.
[/quote]

Vejam agora a definição de Bridge:
“Desacoplar uma abstração de sua implementação para
que os dois possam variar independentemente”

Qual a intenção de separar as camadas? é a mesma de criar uma interface mais simples de um subsistema?

E a de Command?
“Encapsular requisição como objeto, para clientes parametrizarem
diferentes requisições, filas, e suportar operações reversíveis”

Outro que pode ser aplicado:
Mediator:
“Definir um objeto que encapsula como um conjunto de
objetos interagem. Mediator promove acoplamento fraco ao
manter objetos que não se referem um ao outro
explicitamente, permitindo variar sua interação
independentemente.” [GoF]

Pessoalmente acredito que precisamos ver a implementação para podermos avaliar qual é o padrão que melhor se aplica.

Se a classe implementada for uma classe utilizatária (ou singleton), os métodos apenas servem como Wrappers de outras classes e seus respectivos métodos então muito provavelmente é façade.

Mas se a classe incluir alguma inteligência, tiver alguma validação como aspectos de segurança, manter o estado de alguma coisa etc… certamente não será façade.

poe mais dados e poderemos ampliar nossas discussões.

falou.

Dieval

Disfarçar uma organização de classes procedural para poder
chamar de orientada a objetos? Quando combinado com o padrão
Singleton, há 80% de chance de ser esta a intenção.

Algumas luzes em: http://c2.com/cgi/wiki?FacadePattern

– Thiago Arrais

Na minha opnião fachada é realmente isso dito pelo Dieval!

Agora não é muito bom ficar misturando Fachada com Bridge com Mediador, pois eles tem intenções diferentes!

Hmm…
O livro do GoF é bom, mas estou tendo dificuldades com eles… deixa isso pra lá.


Além dos benefícios já citados aqui, eu tenho uma contribuição:

Quando você trabalha em Times, as Fachadas facilitam sua vida. Vou explicar com um exemplo: O rapaz da camada de Persistência elabora uma Fachada com todas as funcionalidades de sua camada, fazendo assim com que o outro rapaz, que utiliza os serviços dessa camada, precise apenas conhecer essa ‘interface’.

É uma interface única para vários subsistemas.

O melhor artigo que ví a respeito do assunto:

(isso porque estou trabalhando com Desktop)

Resumo… um facade também pode ser um Stateful, e no caso de um cliente desconectado (AKA Swing), é bem capaz que ele seja Stateful.

[]s

Em modo geral e básico, eu diria que é uma interface que contempla todas as funcionalidades de um subsistema.