MVC vs Façade

Amigos, aqui na empresa recebi uma documentação de um projeto web que veio com recomendação de desenvolvimento usando o Façade.
Como não conheço esse padrão, fui buscar informações na internet. Os conceitos que encontrei falam do uso de interfaces o mais simples possíveis, usando herança, etc.
Mas isso já não é o que deve ser feito na POO? Ainda não entendi muito bem, mas esse não é o ponto principal.
Pelo que entendi, usar o Façade não significa não usar o MVC, significa?

Quer dizer, eu tenho que optar por um ou outro ou são dois padrões que se complementam?

Vlws.

Vc pode utilizar o facade e o mvn em conjunto sem problema algum !
O facade veio para agilizar os projetos.
Assim como o MVC veio para organizar.

O MVC e Façade são coisas distintas, padrões que podem ser usados ambos no sistema.
O façade é simplesmente uma classe concreta, que terá as chamadas para outras classes, é uma fachada.

Nas minhas aplicações que eu faço costumo sempre utilizar este padrão:

MODEL - Classes que tem a lógica de negocio, estas classes são ou são utilizadas por um Façaide.
VIEW - Classes que irão renderizar as informações para a tela do usuário.
CONTROL - ultimamente estou usando o jsf, ai ele mesmo, faz este trabalho, estas classes chamam o Façaide.

Exemplo do modelo:

class FacadeLocalizadorCliente{

// está classe apenas chama outras classes é uma fachada...
public List<Cliente> pesquisaCliente(Map<String, String> filtro){
   if(filtro.get("id") != null){
       return new LocalizadorClienteInterno().find(filtro.get("id"));
   }else if(filtro.get("cpf") != null){
        return new LocalizadorClienteExterno().find(filtro.get("cpf"));
  }else
        return new LocalizadorClienteNome().find(filtro.get("nome"));
//Muito bom para manutenção, caso precisar trocar a implementação.
}
}

Voce pode usar facade para obter MVC.

Segue aplicação de exemplo usando facade.

http://www.pg.cefetpr.br/coinf/simone/patterns/facade.php

Obrigado pelas resposta.

Que bom que eu não estava louco porque realmente estava achando que poderiam ser usadas em conjunto.

Já estou estudando o material passado.

eu indicaria o seguinte:

la no modelo você tem regras de negocio que são chamadas pelo seu controle. Vamos pegar por exemplo o struts e o JSF, nas suas actions ou managed beans você interagiria diretamente com suas classes de negócio do modelo. Ok, agora pensa que você vá portar isso para desktop por exemplo, ou para um session bean. Essa parte da interação você teria que replicar no session bean ou na sua classe do desktop, por qeu as actions do struts ou managed beans do JSF ja não se aplicariam mais ao seu caso.

Para resolver seu problema, crie uma classe para cada action/managed bean, o que você fosse fazer nestes você faz na classe nova, essa será a sua fachada neste caso de MVC, assim nas classes destes frameworks você só chamaria os métodos da fachada e repassaria o resultado para a view. Se você tiver que trocar do struts para o JSF ou o contrario, só pegar a chamada do façade do anterior e replicar no novo framework usado, sem precisar se preocupar com toda aquela iteração com classes de negócio (elas estão na fachada), o mesmo se aplica caso você queira colocar no EJB ou em uma aplicação swing, a fachada abstrai toda essa parte que você teria que se preocupar sem ela.

O conceito de fachada é ela abstrair de forma mais facil uma determinada ação que envolveria varias chamadas a métodos de classes de negócio, é exatamente o que você está aplicando ai, tem um outro padrão que deve ter vindo do façade que se chama session façade, basicamente é a aplicação disso que eu falei em session beans…

1 curtida