Business Delegate e Session Facade em Swing

9 respostas
paulohbmetal

E aí galera, blz?

Bom estou desenvolvendo uma aplicação em camadas e estou adaptando ela com os patterns acima mencionados.Bom minhas dúvidas são as seguinte:

  • Vcs fazem um Facade para cada Business Delagate?
  • Vcs usam o Facade para controle de transações?
  • O Facade serve para encapsular os casos de uso?
    Por exemplo:
    Tenho um frame de cadastro de funcionários que cadastra o funcionário e os telefones dele.daí quando click num botão gravar, por exemplo, ele cria o objeto funcionário com suas depedência(telefones), passa para o Business Delegate e este passa para o Facade, que por sua vez caha a classe de regra de negócio de funcionário para gravar o Funcionário e a regra de negócio de telefones para gravar os telefones daquele funcionário.

Por tenho mais perguntas mais por enquanto é “só”… :oops:

A Paz!!

9 Respostas

J

Aproveito para postar uma dúvida também.

Já autores de algumas revistas especializadas em java colocarem o Business Delegate como um espécie de Factory.
ex:

// pode ser um servico EJB, Web Service, RMI, etc
class Funcionarios
{

}

class BusinessDelegate
{
   public Funcionarios getFuncionarios()
   {
       return (Funcionarios) ServiceLocator.get(SERVICO_FUNCIONARIOS);
   }
}

Funcionarios funcionarios = BusinessDelegate.getFuncionarios();
funcionarios.inserir();

É lógico que um exemplo bem simplório, mas dá para passar o que estou querendo dizer.

Mas em outros lugares dão exemplos de Business Delegate como uma classe que criar as instancias internamente e possuem métodos que chamam métodos das classes de serviço.
ex:

// pode ser um servico EJB, Web Service, RMI, etc
class Funcionarios
{

}

class BusinessDelegateFuncionarios
{
  Funcionarios funcionarios;
  public BusinessDelegateFuncionarios()
  {
     funcionarios = (Funcionarios) ServiceLocator.get(SERVICO_FUNCIONARIOS);

  }

   public void inserir()
   {  
      funcionarios.inserir();
   }
}

BusinessDelegateFuncionario bdFuncionarios = new BusinessDelegateFuncionario();
bdFuncionarios.inserir();

O que é mais coerente ?

danieldestro

Para mim faz muito mais sentido o Business Delegate do segundo exemplo, pois, como o nome diz, ele deve DELEGAR.

pcalcado

Um BD deveria oferecer métodos que fazem o “serviço sujo”, são ser uma Factory de Façades.

Existe uma técnica exposta no livro UML Components sobre façades encapsulando casos de uso. Não é nada muito limpinho, mas é funcional em alguns contextos (desde que você saiba limpar o excesso de interfaces inúteis).

paulohbmetal

Então vamos ver se entendi…

O Business Facade só me passaria a “referência” para o Facade, no primeiro exemplo?!

A Paz!!

pcalcado

paulohbmetal:

O Business Facade só me passaria a “referência” para o Facade?!

Não. Considere um EJB Façade (argh!). Considere um cliente Web.

Como você faz o clietne usar o servidor? XYZJaponeixRemoteInterface?

Que tal se você pudesse fazer:

meuBusinessDelegateComUmNomeHorrivel.atualizar(japoneix);

E ele simplesmente se conectar ao EJB, passar parâmetro. Toda a macumbada RMI (ou até decidir se ela é necessária ou não…) com apenas um método simples para seu cliente? Fora a flexibilidade, use HTTP em vez de RMI e mdue só o BD e o façade :wink:

paulohbmetal

pcalcado:
Um BD deveria oferecer métodos que fazem o “serviço sujo”, são ser uma Factory de Façades.

Existe uma técnica exposta no livro UML Components sobre façades encapsulando casos de uso. Não é nada muito limpinho, mas é funcional em alguns contextos (desde que você saiba limpar o excesso de interfaces inúteis).

Pois é, eu tenho medo de virar esta tranqueira… :frowning:

Mas e aí, seria o caso de controlar minhas transações aí, no facade?!

A Paz!!

danieldestro

O que, em termos gerais, não deixa de ser um Proxy.

paulohbmetal

pcalcado:
paulohbmetal:

O Business Facade só me passaria a “referência” para o Facade?!

Não. Considere um EJB Façade (argh!). Considere um cliente Web.

Como você faz o clietne usar o servidor? XYZJaponeixRemoteInterface?

Que tal se você pudesse fazer:

meuBusinessDelegateComUmNomeHorrivel.atualizar(japoneix);

E ele simplesmente se conectar ao EJB, passar parâmetro. Toda a macumbada RMI (ou até decidir se ela é necessária ou não…) com apenas um método simples para seu cliente? Fora a flexibilidade, use HTTP em vez de RMI e mdue só o BD e o façade ;)

É, isso mesmo que estou querendo fazer… Daí meu Business Delegate irá abstrair toda a rotina de chamada ou instanciação do Facade para o view, e também serviria para repassar a requisição.
Blz, mas e no caso do exemplo que dei, como vcs tratam as dependências?!Eu buscaria o funcionário e depois buscaria seus telefones?Pois afinal de contas, são regras de negócio diferentes…

A Paz!!

paulohbmetal

Mais ninguém?!

:frowning:

A Paz!!

Criado 23 de março de 2005
Ultima resposta 23 de mar. de 2005
Respostas 9
Participantes 4