[RESOLVIDO] Estrutura padrão para desenvolvimento de sistema

8 respostas
WesleyAvila

Boa tarde a todos!
Estou começando no universo java e gostaria de saber como modelar minha estrutura de classes.
Abaixo coloquei o que imagino que deve ser.

Aplicação (Visão (Sistema desktop))
Interface Fachada | implementação fachada
Modelo (Classes VO)
Interface Negocio | implementação Negocio (Classes BO)
Interface DAO | implementação DAO (Classes de transação com banco de dados)
Conexão (Classe com conexão ao banco de dados (Sigleton ou Pool de conexões?))
Arquivo proprerties com dados de configuração do banco de dados e outros

A ideia inicial é de não usar frameworks, preciso inicialmente entender como funciona o básico para sentir as necessidades.

Agradeço desde já!

8 Respostas

mario.fts

Cada caso vai requerer um modelo diferente, não da pra definir uma estrutura padrão que atenda bem todos os casos.

Perguntas sobre a sua proposta:

Pq vc precisa de um facede?
pq vc precisa separar comportamento e dados? (VO + BO, Modelo Anêmico)

Os padrões de projeto servem pra resolver problemas recorentes. Se vc não tem o problema, vc não precisa utilizar o padrão.

vou te dar um exemplo, sobre vos e bos: http://www.fragmental.com.br/wiki/index.php?title=Evitando_VOs_e_BOs.

WesleyAvila

A ideia é justamente essa, saber o que usar. O sistema já funciona em web (asp + sql-server) e gostaria de começar a construir outro em java + Flex.
O sistema tem muitas tabelas, mas é de baixa complexidade, basicamente são cadastros de código e descrição e em outras partes a ligação entre essas tabelas.
É um sistema de orçamento bem simples onde cadastro a minha previsão de despesa.

O que eu entendi sobre Facade é que é uma classe que contem todos os métodos de outras classes, podendo assim, ter um único ponto de acesso da minha visão para o controle.

BO e VO foi um padrão que vi muita gente usando, mas não preciso separar o comportamento dos dados, já tinha lido esse exemplo que vc enviou e concordo com ele.

Mas na verdade o que eu quero é um norte pra poder começar.

Que estrutura devo utilizar? Sei que varia conforme as necessidades, mas pra uma estrutura básica, como devo proceder?

Obrigado!

mario.fts

Geralmente pra um sistema desse tipo (basicamente um crudzão pelo q eu entendi) eu usaria a seguinte estrutura (o bom e velho MVC):

View: jsp + jstl + Jquery
Controler: VRaptor
Modelo: suas classes de negócio, com dados em comportamento juntos, nada de bolovo, e classes de serviço pra orquestrar regras de negócio que não pertençam a nenhum objeto especificamente.
Persistencia: hibernate (só pra facilitar e num ter que ficar escrevendo SQL com jdbc, mas poderia usar jdbc puro mesmo se fossem poucas tabelas)

Eu considero esta estrutura bem simples e leve, e aplicaria ela neste caso. mas , novamente, podem ter soluções melhores, esta é apenas uma opinião.

Qaunto aos padrões de projeto, eu não defino nada logo de cara. Conforme vou desenhando e implementando a aplicação eu vou refatorando e inserindo padrões conforme a necessidade, assim evito usar coisas desnecessárias. Tem coisas q vc sabe q vai acabar fazendo, como DAOs por exemplo, mas não é uma obrigatoriedade entende?

mario.fts

só complementando, se vc tem a oportunidasde e o interesse em usar flex, troque o controler e a view só, o resto é independente da sua escolha.

boa sorte.

WesleyAvila

mario.fts, muito obrigado!

Então o que eu deveria seguir é:

  • Visão e Controle no Flex;
  • Modelo (Comportamento e dados) e persistencia no JAVA.

Só uma dúvida, as classes de serviço ficariam no Flex ou no Java?

Vou dar uma procurada por aqui no conceito destas classes de serviço.

Obrigado mais um vez!

mario.fts

Essas classes de serviço q eu mencionei são partes do seu dominio, logo ficam no java.

Pensa assim, se elas fizessem parte do Vraptor, na estrutura q eu tinha montado antes, e vc quizesse mudar pra flex, vc teria que muda-as tbm.

mas como são partes do dominio, e independentes da view, vc pode trocar a view pra flex e nem precisou mexer nelas, sacou?

Só toma cuidado ao criar serviços. só os crie quando a regra de negócio naõ se encaixar bem em nenhum objeto do dominio.

[]'s

sergiotaborda

mario.fts:
Geralmente pra um sistema desse tipo (basicamente um crudzão pelo q eu entendi) eu usaria a seguinte estrutura (o bom e velho MVC):

View: jsp + jstl + Jquery
Controler: VRaptor
Modelo: suas classes de negócio, com dados em comportamento juntos, nada de bolovo, e classes de serviço pra orquestrar regras de negócio que não pertençam a nenhum objeto especificamente.
Persistencia: hibernate (só pra facilitar e num ter que ficar escrevendo SQL com jdbc, mas poderia usar jdbc puro mesmo se fossem poucas tabelas)

Eu considero esta estrutura bem simples e leve, e aplicaria ela neste caso. mas , novamente, podem ter soluções melhores, esta é apenas uma opinião.

O unico problema é que vc está usando os nomes view, controler e modelo (MVC) para descrever as camadas. MVC não é camadas.
O correto seria :

Cliente GUI: HTML + CSS + Jquery
Apresentação: jsp + jstl + VRaptor (actions)
Dominio : suas classes de negócio, com dados em comportamento juntos, nada de bolovo, e classes de serviço pra orquestrar regras de negócio que não pertençam a nenhum objeto especificamente.
Persistencia: hibernate (só pra facilitar e num ter que ficar escrevendo SQL com jdbc, mas poderia usar jdbc puro mesmo se fossem poucas tabelas)

Vc esqueceu os repositorios. Eles ficam no dominio e mediam com a persistência.
Tirando o Vraptor (que pode ser substituido por um outro qq framewrok web) eu tb gosto desta estrutura.

WesleyAvila

Só mais uma questão…
O que vcs acham disso?
http://www.javapractices.com/topic/TopicAction.do?Id=205

Li e achei muito interessante.
Vi que as camadas não tem nada a ver com os pacotes, as camadas interagem entre as classes de mesma caracteristicas, classes dentro do mesmo pacote, claro.
É isso mesmo que estou pensando ou estou falando besteira?

Obrigado!

Criado 10 de março de 2010
Ultima resposta 10 de mar. de 2010
Respostas 8
Participantes 3