Dividir para Conquistar?

20 respostas
Raven

Ola Pessoal !
Em relação a arquitetura WEB com Struts, a parada é a seguinte:
Possuo um form de cadastro simples com as ações ‘Incluir’ , ‘Excluir’ e ‘Alterar’, tudo referente a mesma classe de negocio, imaginei primeiramente criar um Action do Struts para cada ação, mas agora me pergunto se não seira melhor criar um único Action e dentro dele chamar no classe de negocio o método da ação especifico…Que vc´s acham ??

So pra constar, tenho só 2 meses de desenvolvimento Java na Web

Abraços!

20 Respostas

pcalcado

Use várias Ations. Usar uma só é acoplamento de controle.

[]s

danieldestro

Eu costumo usar apenas UMA Action para este caso. A sua Action do Struts teria que estender a classe DispatchAction.

Raven

Hum…saquei, mas na Dispatch então eu estaria chamando as outras actions ou diretamente o objeto de negocio e seus métodos de inclusão/alteração e exclusão ?? Melhorando a pegunta, criaria os métodos necessários nela.

danieldestro

Na verdade entre o Action e as classes de negócio você deveria usar um Business Delegate.

Raven

Mesmo acessando apenas uma classe Business ??
E esse delegate eu preciso cria-lo ?

danieldestro
DispatchAction
public class MeuDispatchAction extends DispatchAction {
  public ActionForward fazIsso( ... ) {
    MeuBD mbd = new MeuBD();
    mdb.fazIsso();
  }

  public ActionForward fazAquilo( ... ) {
  }
}
Business Delegate
public class MeuBD {
  public void fazIsso( ... ) {
    MinhaCN cn = new MinhaCN();
    cn.fazIsso();
  }

  public void fazAquilo( ... ) {
  }
}
Classe de Negócio
public class MinhaCN {
  public void fazIsso( ... ) {
  }

  public void fazAquilo( ... ) {
  }
}
Raven

Rapaz!!! Valeu ! Eu tava perguntado sobre o BD pq poderia ja ter alguma implementação dele pronta, mas pelo que vi é bem simples!!!

Muito Obrigado!!
Thanxs!!

kuchma

Para essas operacoes CRUD acho legal ter apenas uma Action tambem. Se puder utilizar a versao 1.2 do Struts, olhe a MappingDispatchAction, que ja agiliza o trampo: http://struts.apache.org/api/org/apache/struts/actions/MappingDispatchAction.html

Daniel, qual seria a funcao do BusinessDelegate nesse cenario? Ele atua apenas como um intermediario entre a Action e as Classes de Negocio repassando todas as solicitacoes Action --> Negocio? Que problema haveria de arquitetura se chamassemos o Negocio direto da Action?

Ou isso seria mais para utilizacao com EJB?

Marcio Kuchma

Jair_Rillo_Junior

Eu entendo o Business Delegate (e sempre tento utilizá-lo) como um objeto entre as regras de negócios e o cliente (no caso uma Action do Struts). O Objetivo é caso haja uma alteração nas regras de negócios, o cliente não tenha muitas alterações. Isso é muito importante quando você tem vários clientes (Action do Struts, Action do Webwork, um Controller para projetos Swing e assim vai).

pcalcado

Fora que seu clietne não rpecisa se estressar com RMI, JNDi, RemoteHome blahblabla… nossa, só isso vale o Pattern.

Tá, antes que o cv leia este tópico e coloque o comentário padrão #054 sobre IoC, falamos de um mundo imperfeito onde as pessoas cismam em usar EJB e JSP. :stuck_out_tongue:

[]s

danieldestro

Acho que já responderam por mim. Valeu galera.

cv1

Toda vez que voce usa Struts, Deus mata um bebe foca. Pense nas pobres foquinhas, e parem de usar esse lixo. Por favooooooooooooooooooor.

danieldestro

O maior anti-pattern de todos: cv.

UAhuahaua uAH uhA uHAuAH uAH AUh UHAua
Don´t take me wrong, dudeee! 8)

louds

Um business delegate é um nome diferente para use-case facade ou role facade, dependendo da forma que você implementar o BD.

Betinhum

AFFFF! Escroto! hauehaiouehoiuahoeiuaoheiuiuae! :lol:

Guilherme_Silveira

cada vez que voce menciona a palavra St**ts, Deus mata um bebe foca

Guilherme_Silveira
danieldestro:
DispatchAction
public class MeuDispatchAction extends DispatchAction {
  public ActionForward fazIsso( ... ) {
    MeuBD mbd = new MeuBD();
    mdb.fazIsso();
  }

  public ActionForward fazAquilo( ... ) {
  }
}
Business Delegate
public class MeuBD {
  public void fazIsso( ... ) {
    MinhaCN cn = new MinhaCN();
    cn.fazIsso();
  }

  public void fazAquilo( ... ) {
  }
}
Classe de Negócio
public class MinhaCN {
  public void fazIsso( ... ) {
  }

  public void fazAquilo( ... ) {
  }
}

mas que o exemplo ficou bonitinho, ficou sim.

kuchma

Um novo palindromo! :mrgreen:

Marcio Kuchma

caiofilipini

Um novo palindromo! :mrgreen:

huahuhauhahuhuahuahuahuhuahua
boa! :lol:

danieldestro

Um novo palindromo! :mrgreen:

Marcio Kuchma

Um palíndrono seria também uma capicua?

Criado 8 de dezembro de 2004
Ultima resposta 13 de dez. de 2004
Respostas 20
Participantes 10