MDI, SDI, CardLayout, quando usar cada um?

Estou querendo bolar um sistema pra empresa que trabalho, aprendi a usar os 3 padrões (MDI, SDI e CardLayout), o que mais me agradou foi o CardLayout que foca o usuário na tarefa que ele vai fazer, porém a maioria fala bem do MDI que vamos dizer que é “multitarefa”, não preciso fechar uma função do sistema para ir até outra, porém fica muita janela aberta e acho que isso poderia atrapalhar mais do que ajudar o usuário.

Quando usar cada um dos padrões?

Acham legal usar o CardLayout chamando as funções pela barra de menus?