Tentando implementar algo como Abstract Factory

Bom gente, desculpem-me pelo título pouco significativo, mas não consegui pensar em nada melhor.

Minha dúvida é a seguinte:

Eu trabalho com algoritmos de otimização e gostaria de implementar uma interface única de uma classe abstrata Algoritmo (ou talvez apenas uma interface mesmo). Esta classe teria algo como os métodos abstratos init(), executar() e getSolucao(). Mais ou menos assim:

public abstract class Algoritmo {

   public abstract void init(Dados dados, Parametros);

   public abstract void executar();

   public abstract Solucao getSolucao();
}

Bem, poderíamos ter algumas variações disso, como implementar o Template Method() no método executar, chamando os outros métodos… sei lá.

A questão é que para problemas diferentes, eu tenho Dados e Solucao diferentes; e para algoritmos diferentes, Parametros diferentes. Por exemplo:

public class Parametros {

   private long tempoMax;

   private double alfaQualquer;
}

public class ParamAlgoritmoGenetico extends Parametros {

   private int tamPop;

   private double taxaMutacao;
}

ou seja, membros novos, que Parametros não tem acesso. Como fazer algo do tipo abaixo sem gambiarra (como casting)?


...

// Caixeiro Viajante
Problema prob = Problema.getInstance("CV");

// objeto da classe DadosCV
Dados dados = prob.formatDados();

dados.ler(arquivo);

// Algoritmo genético
Algoritmo alg = Algoritmo.getInstance("AG");

// objeto de ParamAlgoritmoGenetico
Parametros param = alg.getParam();

alg.init(dados,param);

alg.executar();

// objeto da classe SolucaoCV
Solucao sol = prob.formatSolucao();

sol.setSolucao(alg.getSolucao());
...

Eu sei que não fui muito claro, mas se vocês tentarem me ajudar, eu ficarei muito grato!

Abraços,
Victor

Olha para te ser sincero não te entendi muito.
Mas você pode Fazer que o construtor seja um Map<String,Objetc>
Assim para cada problema você poderia colocar objetos diferentes.

Deste modo vc constroi um método abstrato executar.
Que será responsável pelo processamento e pegar tais objetos.