Eae filhote...
Acho que entendi...
É como a sua classe irá buscar a informação, já que existem diversas possibilidades?
Geralmente se faz desse modo:
Cria-se uma classe de Factory (isso é um design pattern, caso não saiba recomendo vêr um exemplo, é bem tranquilo...), que poderá ser feito de dois modos:
O "cliente" (classe que quer um valor de entrada) pode chamar o método específico que ele quer (ou passar como parametro algo que indique isso)
Cliente:
....
void fazerXpto() {
Factory f = Factory.getInstance();
EntradaSaidaFactory esf = f.getFactory<EntradaSaidaFactory>(EntradaSaidaFactory.class);
EntradaSaida es = esf.getEntradaSaida(); //Nesse caso a nossa classe de Factory "sabe" internamente de qual classe ele deve retornar uma referência. Seja através de properties/hard code/o escambal.
EntradaSaida es = es.getEntradaSaida(es.GUI); //Nesse caso o "cliente" (nós) informamos de qual tipo deve ser a classe criada.
}
Uma classe Factory é bemm simples mesmo, caso essa seja a dúvida agora, é só algo como:
public class Factory {
private static final Factory ME = new Factory();
protected Factory() {}
// ....
// ....
public static Factory getInstance() {
return ME;
}
}
com métodos como:
public EntradaSaida getEntradaSaida() {
return new EntradaSaidaGUI();
}
Mas enfim, esclareçe melhor a sua dúvida, talvez eu tenha viajado legal, rsrs.
Falows