Business Delegate e Session Facade em Swing

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!!

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 ?

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

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).

Então vamos ver se entendi…

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

A Paz!!

[quote=paulohbmetal]
O Business Facade só me passaria a “referência” para o Facade?![/quote]

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:

[quote=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).[/quote]

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!!

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

[quote=pcalcado][quote=paulohbmetal]
O Business Facade só me passaria a “referência” para o Facade?![/quote]

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 ;)[/quote]

É, 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!!

Mais ninguém?!

:frowning:

A Paz!!