Estou com uma dúvida sobre a utilização dos Design Patterns Business Delegate e Facade.
Uma única classe, no caso uma interface, pode ser aplicar estes 2 DP ao mesmo tempo? Ela pode ser um business delegate e uma facade da aplicação??
Eu acredito que sim… como os 2 patterns seguem uma linha similar, que é definir uma interface simples que abstrai toda a complexidade da implementação, creio que os 2 podem ser usados de maneira conjunta.
Estas palavras (Business Delegate e Facade) podem ter significados diferenciados ao se falar sobre arquitetura e POO.
O pattern Business delegate (http://java.sun.com/blueprints/corej2eepatterns/Patterns/BusinessDelegate.html) reduz o acoplamento entre as camadas cliente e serviços que fica na parte server. Este pattern, que faz parte da camada cliente abstrai toda a parte de localização e comunicação com os serviços disponíveis no servidor.
O pattern Session facade ( http://java.sun.com/blueprints/corej2eepatterns/Patterns/SessionFacade.html ) encapsula e abstrai a complexidade do uso dos objetos de negocio formando uma fachada fácil de utilizar e entender. A granularidade neste parte é considera maior em relação as outras partes mais “internas” das implementações.
Toda a abstração dos acessos e comunicação entre um client e um server (onde estão os serviços) são feitas por estes dois patterns. Com a aplicação de novos recursos (frameworks e linguagem) a implementação destes pattern ficaram bem simplificadas. Muitos, infelizmente, negligenciam os conceitos existente nestes padrões resultando em implementações rudimentares causando dificuldade na manutenção e lentidão nos acessos; ficar fácil ou transparente não significa poder fazer de qualquer maneira.
Sendo assim, acredito que poderia (depende da situação) utilizar uma única interface na implementação das duas partes já que os dois conceitos estão, de certa forma associados. No link onde descreve o pattern business delegate tem uma implementação exemplo que da para perceber a repetição dos nomes dos métodos ao executar os serviços do session facade, poderia-se ter utilizado uma interface na implementação para assegurar que as duas camadas irão cumprir o “contrato”.
Também estou estudando isso, ainda não tenho conhecimento o suficiente para esclarecer dúvidas, mas conheço uma fonte de estudos muito boa que não colocaram aqui.
Tem o site oficial do livro Core J2EE Patterns, ele é mais atualizado (segunda edição) que o site de blueprints da sun, que está ainda na priemira edição do livro.
Nele inclui mudanças que os autores fizeram nos diagramas de classes e sequencia, além de adicionar novos padões excluivos da segunda edição do livro.
Mas não tem a implementação, o único ponto fraco na minha opinião.