Uso de padrões de criação - Projeto Cliente/Servidor

Pessoal,

Estou melhorando um projeto Cliente/Servidor que fiz há pouco tempo. A princípio, criei uma aplicação cliente e outra servidor, onde ambos comunicam-se através de sockets. A interação entre usuários e aplicação é realizada via interface Gráfica (GUI). Entretanto, decidi alterar o projeto para que aceitasse múltiplos estilos de interação com o usuário (GUI e terminal, por exemplo).

Utilizando o padrão Singleton, criei uma classe abstrata que contém o método getInstance(String type) : AbstractView. Esse método recebe como parâmetro o tipo de view a ser criada. Sendo assim, as classes Gui e Terminal deveriam estender de AbstractView.

O problema é que Gui já estende de outra classe, JFrame. Uma solução seria criar uma interface IView no lugar de AbstractView, e fazer com que Gui e Terminal implemente-a. Porém, acho que existem métodos melhores de resolver este problema.

Solicito a ajuda de vocês para resolver esse impasse, utilizando padrões de projeto aplicados especialmente a este problema.

Desde já agradeço.