Ola Pessoal,
Sem cair na armadilha de qual Design Pattern eh melhor … qual se encaixa bem no seguinte cenario?
Um programa base é inicializado, o usuário faz o login, após a autenticação um grupo de menu é disponibilizado para o usuario iniciar outros programas (baseado nas permissões). Cada programa roda em sua propria janela mas debaixo do programa base, compartilhando funções de log, conexão, preferencias e resources além do perfil do usuario.
O programa base deve ser capaz de gerenciar os varios programas incializados, por exemplo, nao permitindo ao usuario sair com um processo rodando.
Eh importante lembrar q cada programa interno deve ter uma GUI e um processamento em outra thread manipulando essa GUI e interagindo com o programa pai.
ehehe, nao sei se com isso é possivel dar uma direcao, mas ainda estou no projeto e meio perdido 
Estou vendo o esquema das Threads pra esse ambiente, controles de concorrencia etc. etc. … alguma dica?
Obrigado
