Singleton é uma boa pratica?

é uma dúvida meio besta, mas vou tentar explicar:

se tenho um JFrame que tem um formulario, tipo uma pesquisa, com varias perguntas, e varios campos de texto para o usuario digitar a resposta.
E no meio desse formulario, tem um botão para o usuario digitar seus dados pessoais, ao clicar neste botão, abre outro JFrame, com os campos correspondentes, tipo, nome, endereço, telefone,etc

//no evento do botão dados pessoais Dados_Pessoais dados=new Dados_Pessoais(); dados.setVisible(true);

mas depois do cara preencher este outro JFrame, quando ele clicar no botão OK, deve voltar ao JFrame principal, teoricamente era só fazer no evento do botão OK
do Frame Dados Pessoais:

this.setVisible(False);

Só que eu quero que essas informações de Dados Pessoais sejam adicionadas no Frame principal, mas tambem não quero perder os dados ja digitados no Frame principal
Como posso fazer isso?

estou utilizando Singleton, declaro o contrutor do Frame Principal como Private e crio um metodo obterInstancia para pegar a instancia do Frame Principal que ja estava aberto:

[code]private static Frame_Principal principal=null;

public static synchronized Frame_Principal obterInstancia(){
    if(principal == null)
        principal = new Frame_Principal();
    return principal;
}[/code]

crio um método no Frame Principal para receber os dados do Frame Dados Pessoais:

public void recebeDados(String nome, String endereco, int telefone){ //seta os dados para os campos }

e no evento do botão Ok do Frame Dados Pessoais, eu crio uma variável do tipo Frame Principal e uso o metodo obterInstancia:

Frame_Principal principal=FramePrincipal.obterInstancia(); principal.setVisible(true); principal.recebeDados(txt_nome.getText(),txt_endereco.getText(),Integer.parseInt(txt_tel.getText()))

Isso funciona!

Sei que a pergunta é meio confusa, mas:
mas essa é a melhor maneira?
Existe uma forma melhor para se fazer isso?