Duvidas com MVC

Fala galera do PJ!
Confesso que já vi alguns tutoriais de MVC e acho que não entendi muito bem as funções da camada de controle.
Estou fazendo uma agenda (bem básico mesmo :lol: ) e criei as 3 camadas:
modelo (Contato, AgendaBD - para conexão com banco), view (FrmPrincipal, FrmCadastro e FrmPesquisa) e na camada de controle a classe Agenda.

Segue o codigo - inacabado - da classe Agenda:

public class Agenda {
    
    private AgendaScreen telaPrincipal = null; //tela principal
    private CadastroScreen janelaCadastro = null; //tela de cadastro
    private PesquisaScreen janelaPesquisa = null; //tela de pesquisa
    private AgendaBD banco = null; //referencia ao banco de dados
    
    public Agenda(){
        
        //abre a janela principal
        telaPrincipal = new AgendaScreen("Agenda 1.0");
                
        //eventos
        //menu Cadastrar contatos        
        telaPrincipal.getMnuInserir().addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent evento1){
               janelaCadastro = new CadastroScreen("Contatos");
               janelaCadastro.iniciar();
            }
         });
        
        //menu pesquisar contatos
        telaPrincipal.getMnuPesquisar().addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent evento1){
               janelaPesquisa = new PesquisaScreen("Pesquisar contato...");
               janelaPesquisa.iniciar();
            }
         });
        
        /*
        *eventos da janela de Cadastro
        *inserir, alterar, excluir etc.
        */
        
        /*
         *eventos da janela de Pesquisa
         *pesquisar 
         */
       
    }
    
    public void executa(){
        telaPrincipal.iniciar();
        
        //realiza conexao com banco de dados
        try{
           banco = new AgendaBD();
           banco.conecta();
           
        }catch(ClassNotFoundException cnfEx){
            
           JOptionPane.showMessageDialog(telaPrincipal,cnfEx,
                   "Erro - Driver",JOptionPane.ERROR_MESSAGE);
           System.exit(1);
           
        }catch(SQLException sqlEx){
            
            JOptionPane.showMessageDialog(telaPrincipal,sqlEx,
                    "Erro - MySQL",JOptionPane.ERROR_MESSAGE);
            
        }
    }
    
    public static void main(String args[]){
        
        Agenda aplicativo = new Agenda();
        aplicativo.executa();
        
    }

}

No construtor eu coloquei os codigos dos eventos das janelas. É desta forma que eu devo proceder? A regra de negócio também deve estar nesta classe? Ou devo criar em uma classe separada, para ficar, talvez, um código mais legível.
Se tiverem mais alguma observação sobre o meu código, por favor respondam.

Muito obrigado pela atenção!!

Só corrigindo - vcs devem ter percebido - as classes que compõe a view são:
AgendaScreen, CadastroScreen e PesquisaScreen.

Valeu!!

Oi,

Este artigo pode te ajudar a entender a diferença entre MVC e Camadas:

http://fragmental.com.br/wiki/index.php?title=MVC_e_Camadas