MVC - Melhores Práticas

Olá pessoal, gostaria de tirar uma dúvida sobre MVC.
Digamos que eu tenha a classe Veiculo e a classe Fabricante. cada veículo possui um fabricante como atributo, dentre outros atributos.
Tenho as views para manter (cadastrar, editar e excluir) e buscar veículo e também fabricante.
Cada classe modelo tem seu controller (decidi criar 1 controle por modelo, ao invés de criar um controle por view).
Ou seja, a classe controlVeiculo será acessada por mais de uma view e terá os métodos
+listarVeiculos()
+salvarVeiculo(Veiculo v)
+editarVeiculo(Veiculo v)
+excluirVeiculo(Veiculo v)
(…)
que por sua vez acessa as classes DAO. Bem como a classe controlFabricante terá os mesmos métodos para fabricante.

A minha dúvida é a seguinte:

Quando eu chamar a view para cadastrar veículo, por exemplo, vou precisar listar os fabricantes já cadastrados no banco para a escolha do usuário.
Essa lista de fabricantes deve vir da onde?

  • crio uma instância do controlFabricante dentro da viewVeiculo e chamo o método normalmente?
  • deixo a minha viewVeiculo somente acessando o seu controle (controlVeiculo) e crio um método no controlVeículo para acessar a DAOFabricante?
  • deixo a minha viewVeiculo somente acessando o seu controle (controlVeiculo) e, ao invés de criar um método no controlVeículo, eu crio uma instância do controlFabricante dentro de controlVeiculo e chamo o método entre os controllers (já que já tem um método definido no outro controle, evitando duplicar métodos)
  • alguma outra sugestão?

Espero que tenha ficado claro minha dúvida.

Obrigado

Especifique qual tipo de aplicação está desenvolvendo. Se for back-end web por exemplo, pode não fazer sentido se preocupar com isso. De qualquer forma especifique melhor para que o pessoal consiga te ajudar.

Um sistema para gerenciar um estacionamento comercial, com controle de vagas disponíveis e cobrança de estadas conforme tipo de veículo e tempo de permanência. Será um sistema embarcado, sem módulos web, com banco de dados local mysql utilizando jdbc.
As views utilizarão o padrão swing do netbeans.
Em alguns estudos eu vi controles sendo estanciados na view e, na hora em que o usuário clica no botão salvar, a view acessa o método gravarVeiculo no controle, que por sua vez acessa o banco e Se precisar, devolve uma mensagem ou boolean se gravou ou não com sucesso.
Em outros casos, vi a view isolada, com um listener implementado no controle. Assim, quando o usuário clica em salvar, o controle acessa a view, pega as informações e salva no banco. Isso está me confundindo um pouco.

Na dúvida siga o que a desenvolvedora da ferramenta divulga: http://www.oracle.com/technetwork/articles/javase/index-142890.html

Embora eu não recomende Java para desktop, quem faz novas aplicações desktop em Java costuma usar JavaFx. Apesar da fama por facilitar o programador, Swing nunca foi bom para qualidade de resultado, e agora finalmente está caindo em desuso.