Qual a melhor forma de trocar a tela do sistema (ir para outra função)?

Estou querendo construir uma pequena aplicação e gostaria de saber qual a melhor forma de interagir entre janelas em um sistema java (desktop, apenas didatico), tenho meu sistema aberto com a barra de jMenus, lá eu quero clicar em clientes > cadastro, aí toda a tela embaixo do meu jMenu precisa mudar para uma tela (um jFrame que eu criei a parte) que traz as funções de cadastro de clientes.

Existe a forma de CardLayout que particularmente gostei muito, porém ouvi dizer que ele carrega todos os JPanels na memória e se meu sistema tiver 100 telas, ele irá carregar 100 telas na memória, achei ruim neste caso.

MDI parece ficar um pouco bagunçado a não ser que eu consiga uma forma de deixar apenas uma janela aberta e maximizada não permitindo redimensionar e caso o usuário clique em outra função do sistema como cadastro funcionario a tela atual fecha e abre a outra.

Qual a forma correta (mais moderna) de construir uma aplicação desse tipo para interagir entre as janelas? Existe uma forma melhor? Gostaria que seja apenas 1 tela para o usuário.