Qual a melhor forma de controlar o fluxo de dados em telas swing?

Atualmente eu estou usando JFrame como tela principal com um menu, desse menu eu abro JInternalFrames para as outras telas e dentro desse abro outro JInternalFrame, e assim por diante. Para acessar os dados das janelas pai, eu passo o pai por parametro no método construtor da classe filha por exemplo:

private JanelaPai jPai;

public JanelaFilho(JanelaPai jPai) {
initComponents();
this.jPai = jPai;
}

Não sei se essa é a melhor forma de se trabalhar com os dados entre telas por que estou tendo alguns problemas como, por exemplo, se eu quiser chamar essa janela filho a partir de uma janela pai que nao tenha o mesmo tipo daquela passada no construtor eu teria que criar outra classe semelhante com os mesmos componentes?

Minha pergunta é como trabalhar com os dados entre telas nesse sentido?

Usando qual IDE?

Netbeans

Eu costumo criar uma classe controladora para minhas telas, assim eu centralizo a instanciação nessa classe e aí fica fácil as telas dependentes terem acesso à tela com a qual querem trocar mensagens.

Isso seria o padrão MVC? Onde eu poderia estudar mais sobre o assunto?