MVC - Camadas  XML
Índice dos Fóruns » Arquitetura de Sistemas
Autor Mensagem
bglbruno
JavaChild
[Avatar]

Membro desde: 05/01/2011 15:15:40
Mensagens: 143
Localização: Guarulhos
Offline

Olá Pessoal !

Estou começando a desenvolver com java e OO, então tenho algumas ( talvez muitas ) dúvidas ainda, talvez primárias, ou não.
É o seguinte.
Estou usando MVC. Até aí tudo bem, já entendi bem como funciona e tal.
Só que me surgiu uma dúvida. Eu posso ter uma camada entre o Controller e o Model ?
Aonde eu vou escrever minhas regras de negócio ? No Controller ?
Eu poderia criar uma camada a mais, tipo ClienteManager, responsável pela regra ?

O que vocês fazem geralmente ?



[MSN]
fernandopaiva
GUJ Ranger
[Avatar]

Membro desde: 20/03/2007 00:00:57
Mensagens: 974
Offline

Salve....Seguinte, da uma lida na apostila FJ21 da Caelum, na parte de DAO(Data Access Object)....tu vai sacar a parada.
To começando agora tbm a usar esse esquema, e essa apostila me ajudou bastante.

To fazendo assim:
classetela - view
classebean - model
classedao - controller

t+ e boa sorte.

www.iguanasistemas.com.br
J2SE Developer

Acessem o canal de Java no Brasil
irc.freenode.net
#java-br



[MSN]
bglbruno
JavaChild
[Avatar]

Membro desde: 05/01/2011 15:15:40
Mensagens: 143
Localização: Guarulhos
Offline

Legal Fernnando.
Já dei uma lida na apostila, inclusive fiz o treinamento lá rs Mas cara, acho que não entendeu minha dúvida.

Deixe-me ver se entendi o que você disse.
Você disse pra eu colocar minha regra de negócio no DAO ?

Não sei se faz muito sentido cara.
Pensando num design melhor, aonde faz mais sentido eu colocar minha regra de negócio ?


[MSN]
igor_henrique
JavaTeenager

Membro desde: 07/02/2011 20:42:29
Mensagens: 168
Localização: Blumenau-SC
Offline

Existe um modelo chamado de MVC-2 que há sim uma camada a mais, exatamente a Manager que vc refere. Então pode usar sim, crie uma camada a mais e coloque tuas regras de negócio lá.
fernandopaiva
GUJ Ranger
[Avatar]

Membro desde: 20/03/2007 00:00:57
Mensagens: 974
Offline

Entaum, eu faço assim.



eh isso....t+ e boa sorte

www.iguanasistemas.com.br
J2SE Developer

Acessem o canal de Java no Brasil
irc.freenode.net
#java-br



[MSN]
leo_lvieira
Thread.start()
[Avatar]

Membro desde: 21/01/2011 15:01:26
Mensagens: 31
Offline

wikipedia: Model-view-controller (MVC) é um padrão de arquitetura de software que visa a separar a lógica de negócio da lógica de apresentação, permitindo o desenvolvimento, teste e manutenção isolado de ambos.

o interessante eh usar o controller para a regra de negocios, nao necessariamente dentro do DAO, mas fazendo uma modelagem na qual principalmente a view esteja separada, só chamando os metodos e etc das outras camadas.. dá mais trabalho mas vale muito a pena



acredito que o ClienteManager que voce citou faz muito sentido usar sim, por exemplo nele vc pode guardar um array de Clientes (MODEL) e apresentá-los numa view (ex: TelaClientes).. claro que usando java web voce tem frameworks que te ajudam melhor nisso..

http://www.tecnologiasmoveis.com.br - Android, iOS e o melhor das Tecnologias Mobile! Visite!
[MSN]
j0nny
GUJ Master
[Avatar]

Membro desde: 19/09/2009 00:01:57
Mensagens: 1121
Localização: Blumenau - SC
Offline

Quando eu tenho alguma lógica que vai trabalhar com duas ou mais entidades (models), crio uma classe Service (ou qualquer outro nome), que vai conter essa lógica específica.

This message was edited 1 time. Last update was at 18/08/2011 07:14:18


@jntsdaniel
github.com/jonatasdaniel

---

AndOrm - Framework ORM para Android
http://github.com/jonatasdaniel/andorm
[WWW]
bglbruno
JavaChild
[Avatar]

Membro desde: 05/01/2011 15:15:40
Mensagens: 143
Localização: Guarulhos
Offline

Hm, legal !
Gostei dessa ideia da classe Service j0nny. Mas, seria a mesma coisa que uma Manager? Ou eu teria as duas?

Valeu Pessoal !

[MSN]
j0nny
GUJ Master
[Avatar]

Membro desde: 19/09/2009 00:01:57
Mensagens: 1121
Localização: Blumenau - SC
Offline

bglbruno wrote:Hm, legal !
Gostei dessa ideia da classe Service j0nny. Mas, seria a mesma coisa que uma Manager? Ou eu teria as duas?

Valeu Pessoal !


Acho que não precisaria da Manager tbm, ou crie somente a Manager, o nome, nesse caso, não importa muito, desde que esteje claro para sua equipe qual o papel dessa classe.

@jntsdaniel
github.com/jonatasdaniel

---

AndOrm - Framework ORM para Android
http://github.com/jonatasdaniel/andorm
[WWW]
bglbruno
JavaChild
[Avatar]

Membro desde: 05/01/2011 15:15:40
Mensagens: 143
Localização: Guarulhos
Offline

Entendi j0nny. Beleza.

Tenho uma outra dúvida agora cara.

Eu tenho a view, que vai conversar direto com o controller.
Então o controller conversa com o Manager / Service, executa toda a regra. E Depois ?
Quem deveria conversar com o DAO / Repository ?

[MSN]
j0nny
GUJ Master
[Avatar]

Membro desde: 19/09/2009 00:01:57
Mensagens: 1121
Localização: Blumenau - SC
Offline

bglbruno wrote:Entendi j0nny. Beleza.

Tenho uma outra dúvida agora cara.

Eu tenho a view, que vai conversar direto com o controller.
Então o controller conversa com o Manager / Service, executa toda a regra. E Depois ?
Quem deveria conversar com o DAO / Repository ?


Controller conversa com seu Service (caso tenha, muito cuidado para não criar Services que apenas delegam funções para alguém), que faz alguma lógica nas suas entidades e persiste (caso precise) usando um Repository ou um DAO.

Eu costumo usar da seguinte maneira:
Controller (Activity quando estou programando para Android) -> Service (caso precise, caso contrário pule essa camada) -> Repository
Repository prefiro que seja apenas uma interface com as operações que devem ser realizadas, ee meu DAO implementa essa interface.
Nesse caso minhas lógicas não sabem da existência de um DAO ou algo parecido.

Mas como falei, muito cuidado com classes que apenas delegam funções.

@jntsdaniel
github.com/jonatasdaniel

---

AndOrm - Framework ORM para Android
http://github.com/jonatasdaniel/andorm
[WWW]
bglbruno
JavaChild
[Avatar]

Membro desde: 05/01/2011 15:15:40
Mensagens: 143
Localização: Guarulhos
Offline

j0nny wrote:
Repository prefiro que seja apenas uma interface com as operações que devem ser realizadas, ee meu DAO implementa essa interface.
Nesse caso minhas lógicas não sabem da existência de um DAO ou algo parecido.


Certo !
Só não ficou claro uma coisa.

Como assim as lógicas não sabem da existência de um DAO ?
Na classe Service você não vai precisar receber um DAO no construtor ?
E nos métodos eu faria assim, certo ?

[MSN]
j0nny
GUJ Master
[Avatar]

Membro desde: 19/09/2009 00:01:57
Mensagens: 1121
Localização: Blumenau - SC
Offline

bglbruno wrote:
j0nny wrote:
Repository prefiro que seja apenas uma interface com as operações que devem ser realizadas, ee meu DAO implementa essa interface.
Nesse caso minhas lógicas não sabem da existência de um DAO ou algo parecido.


Certo !
Só não ficou claro uma coisa.

Como assim as lógicas não sabem da existência de um DAO ?
Na classe Service você não vai precisar receber um DAO no construtor ?
E nos métodos eu faria assim, certo ?


Nesse caso que passei pra vc, o DAO implementaria o Repository, então o Service receberia o Repository no construtor, e não o DAO.

@jntsdaniel
github.com/jonatasdaniel

---

AndOrm - Framework ORM para Android
http://github.com/jonatasdaniel/andorm
[WWW]
bglbruno
JavaChild
[Avatar]

Membro desde: 05/01/2011 15:15:40
Mensagens: 143
Localização: Guarulhos
Offline

Saquei!
Uma outra dúvida que tenho quanto ao repository.
Ele conversa com a base de dados também ? ou somente por meio do DAO ?

Acho que o DAO deveria ficar responsável pelo CRUD basico
E o Repository delegar operações CRUD pro DAO, e outras lógicas além do CRUD, o Repositoty ficar responsável.

Ai o Service não saberia da existência mesmo do DAO, por que o usa é o Repository

Seria essa a estrutura ?

[MSN]
j0nny
GUJ Master
[Avatar]

Membro desde: 19/09/2009 00:01:57
Mensagens: 1121
Localização: Blumenau - SC
Offline

bglbruno wrote:Saquei!
Uma outra dúvida que tenho quanto ao repository.
Ele conversa com a base de dados também ? ou somente por meio do DAO ?

Acho que o DAO deveria ficar responsável pelo CRUD basico
E o Repository delegar operações CRUD pro DAO, e outras lógicas além do CRUD, o Repositoty ficar responsável.

Ai o Service não saberia da existência mesmo do DAO, por que o usa é o Repository

Seria essa a estrutura ?


Exatamente, o Repository faz a frente das operações, mas quem se responsabiliza mesmo com elas é o DAO.
O Repository não fica responsável por nada além de fazer frente as operações de banco, etc, pq ele é uma interface, e não uma classe.

@jntsdaniel
github.com/jonatasdaniel

---

AndOrm - Framework ORM para Android
http://github.com/jonatasdaniel/andorm
[WWW]
 
Índice dos Fóruns » Arquitetura de Sistemas
Ir para:   
Powered by JForum 2.1.8 © JForum Team