Modelo Arquitetural

Pessoal,

Estou ‘tentando’ utilizar um modelo arquitetural para o meu TCC. Ele deve ser todo feito OO, independente da linguagem.
Estou utilizando a plataforma .NET, mas não vem ao caso.

O modelo elaborado (até então) utiliza o Facade, Singleton e DAO.

Preferi não colocar mais padrões para não criar mais “camadas” no sistema, pois já estou me perdendo no que já tenho.

Para o fluxo de mensagens, imagino que possa ser da seguinte forma:
Tela >> Classe de Fronteira (codigo da pagina)
Classe de Fronteira >> Facade
Facade >> Controlador
Controlador >> Entidade (que também se relaciona com as outras instancias)
Controlador >> Persistencia (DAO)

Não tenho dúvidas (pelo menos até o entendimento atual) do fluxo de ida, mas tenho dúvidas no fluxo de retorno, principalmente quando envolve retorno do banco de dados.

Vamos ao ponto principal da questão:
A principio seria interessante definir um fluxo os quais tenho os itens Categorias e Documentos. Uma categoria possui documentos. Um documento pode fazer parte de mais de uma categoria. Em modelo relacional, temos uma relação N…N.
Nas classes de entidade (apenas com métodos gets/sets) defino as colecoes:
Categoria tem um atributo de colecao de documentos e Documento tem um atributo de colecao de categorias. (Fiz uma redundancia, nao sei se conceitualmente está correto).

A DUVIDA:
Como faço para controlar as coleções de ambas entidades nao perdendo a performance (de preferencia as colecoes so devem ser populadas quando solicitado)??

Como deve seguir o fluxo de mensagens entre as instancias? Ex:
Fronteira >> Facade

  • createCategory(nome, descricao): void

Facade >> Controlador

  • createCategory(nome, descricao): void

Controlador >> Entidade

  • new Entidade(nome, descricao): void

Controlador >> DAO

  • create(Entidade)

[color=“red”]RETORNO
DAO >> Controlador ???
Controlador >> Facade ???
Facade >> Fronteira ???[/color]

Escrevi demais, mas achei importante ambientar, pois não sei exatamente o escopo de minha dúvida. Talvez possa abranger mais que isso.

Atenciosamente,
Danilo Costa

e eu não entendi muito a tua arquitetura… :roll: , ta meio enrolado…

Também não entendi.

Vix… cara ta complicado de entender o que vc fez.

Bom, vou sugerir aqui uma arquitetura simples.
Vc tem uma tela, digamos cadastro de cliente.
Vc tem um Façade que “trata” os dados da tela.
Vc tem OU Controller que irá controlar o fluxo desta aplicação.
OU tem um Delegate(?? depende do que vc precisa).
Vc pode ter um Command
Vc terá um DAO.

O fluxo seria mais ou menos o seguinte:
Tela -> Façade -> Controller ou Delegate -> CadastraUsuarioCommand -> UsuarioDAO
o fluxo de retorno seria algo assim:

  • UsusarioDAO (cadastrou e retorna um objeto populado com o novo cara, ou um boolean, e sempre lança excessão pra cima nunca trata)
  • CadastrarUsuarioCommand (chama o DAO, e trata exceções lançadas e lança alguma excessão mais inteligível para as camadas de cima)
  • Controller ou Delegate (retornam o que vier la do DAO, ou passam pra cima a excessão lançada)
  • Façade (faz maus algum tratamento necessário e retorna em um formato inteligível pela Tela)
  • Tela recebe os dados ou mensagens e as mostra

Bom não sei se lhe ajudou isso, mas da pra ver mais ou menos o fluxo de uma aplicação.

Espero ter ajudado!

Abraços!