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.