Dúvida conceitual: um EJB já não é por natureza um Facade?

5 respostas
Z

A dúvida é essa mesmo: um EJB já não é por natureza um Facade?

Pergunto pois vi na empresa um colega chamando um EJB de EJBFacade( ou algo próximo a isso), mas que ele dava ênfase em que o EJB dele era uma fachada.

Oras, para mim, quando possuo uma classe que abstrai regras de negócio escondendo de outras camadas ou projetos e deixando transparente para a classe “cliente” o que acontece por trás, já seria uma fachada, e o EJB já faz isso.

Tanto que os EJB’s para os backingBeans do JSF fazem exatamente esse papel de abstração. Viajei?

5 Respostas

W

Sua pergunta é bastante interessante, pois gera reflexão fora da caixa mesmo.

O Facade procura abstrair a complexidade de uma estrutura operacional para torná-la ligeiramente prática ao seu usuário final. Ele concretiza a “morfologia” para fins de interação com o mundo externo e obviamente encapsula órgãos de um sistema “fisiologicamente” complexo.

Mesmo se parecendo com um Facade na sua forma “morfologia”, ainda é preciso investigar o projeto do EJB, porque o Facade não pode ser reconhecido somente por fornecer funções simplicadas em forma de API, mas deve-se constatar que as suas funções públicadas fazem apenas a coordenação de outras operações concretas internas de modo a resumí-las/simplificá-las para o usuário final. Exemplo:

Digamos que você tenha um sistema automotivo que possui as partes: motor de arranque, motor a combustão, transmissão e rodas.

Nenhuma destas partes são um Facade porque elas são reais e exercem operações de verdade cada uma delas, são “órgãos”. Mesmo que suas operações públicas estejam desenvolvidas com simplicidade, não são Facade e nem podem ser.

Por outro lado, você não pode vender estas peças em partes para um usuário final usufruir, pois ele não poderia integrar estas partes porque seria muito complexo se locomover apenas com estes sistemas desintergrados.

Para isso, você empacota tudo numa forma chamada carro e então passa a desenvolver funções para o operador leigo utilizar. Logo simplifica ao gerar funções de liga, desliga, acelera, freia e direciona. Um pouco mais além, você simplifica tanto que adiciona até bancos confortáveis, coloca faróis, buzina, retrovisores e volante para uma boa condução. Estas funções genuinamente formam um Facade carro.

Claro, numa análise simples, eu diria sim que o EJB é um Facade. Mas tecnicamente isso não comprova que é um Facade porque dependeria de uma análise do projeto ou conversa com um dos arquitetos do EJB.

wiliamps

w1lson

Excelente explicação wiliamps, é exatamente isso!

R

zz:
A dúvida é essa mesmo: um EJB já não é por natureza um Facade?

Pergunto pois vi na empresa um colega chamando um EJB de EJBFacade( ou algo próximo a isso), mas que ele dava ênfase em que o EJB dele era uma fachada.

Oras, para mim, quando possuo uma classe que abstrai regras de negócio escondendo de outras camadas ou projetos e deixando transparente para a classe “cliente” o que acontece por trás, já seria uma fachada, e o EJB já faz isso.

Tanto que os EJB’s para os backingBeans do JSF fazem exatamente esse papel de abstração. Viajei?

Cara,parabéns pela pergunta…dificil ver uma pergunta desse nivel no fórum.

Tomara que a trollagem não estrague o tópico.

FernandoFranzini

Não…
EJB é componente portável baseado em especificação que pode ser aplicado de varias formas diferentes e distintas…
Vc pode usa-lo como Facade Local, Facade Remote, Transaction Script, Mensageria Sin/Assíncrona, Service Broker (Rest ou SOAP)

Z

Desde já agradeço a todos e especialmente o “wiliamps”, que fez uma boa analogia e tornou mais fácil abstrair o problema.

Pelo que entendi da colocação do “wiliamps”, dependeria mais de como está implementado o EJB.

No meu caso, nos projetos em que trabalhei, os EJB´s faziam o “trabalho grosso”, eram os centralizadores de tudo, consumindo os recursos necessários, sejam eles acessos a BD´s, webservices e etc, para prover um resultado simplificado para quem o utiliza.
Ou seja, realizando uma “fachada” abstraindo tais complexidades para os clientes.

Mas achei aqui no fórum um material que pode nos ajudar:
http://www.guj.com.br/java/280373-business-delegate-e-facade

Vlw galera.

Criado 22 de outubro de 2012
Ultima resposta 23 de out. de 2012
Respostas 5
Participantes 5