我有很多优化模型,我有一个接口。
public interface IOptModel
{
public void Optimize();
}
然后,我有一个工厂类,它创建了不同的优化模型。
public class FactoryOptModel
{
private Dictionary<string, OptModel> models = new Dictionary<string, OptModel>();
public OptModel getOptModel(string spec)
{
foreach(OptModel model in this.models)
if(spec == "some name")
{
return model_map[spec];
}
}
}
我的问题是OptModel需要两个参数才能正常运行。一个是Problem对象,另一个是Config对象。随着更多模型的开发,我预计未来配置对象可能会发生变化。适合这个的设计是什么?谢谢!
答案 0 :(得分:0)
OptModel接口:
public interface OptModel {
void optimize(String config, String Problem);
}
工厂类:
public class FactoryOptModel {
public OptModel getOptModel(String spec) {
if (spec == "Super Optimizer") {
return new SuperOpt("Super Config", "Super Problem");
} else if (spec == "Fastest Optimizer") {
return new FastestOpt("Fastest Config", "Slowest Problem");
}
else return null;
}
}
超级优化器实施:
public class SuperOpt implements OptModel{
String config;
String problem;
public SuperOpt(String config, String problem){
this.config = config;
this.problem = problem;
}
public void optimize(String config, String problem){
System.out.println("Fastest Optimizer with " + config + "and Problem " + Problem);
}
}
最快的优化器实施:
public class FastestOpt implements OptModel {
String config;
String problem;
public FastestOpt(String config, String problem){
this.config = config;
this.problem = problem;
}
public void optimize(String config, String Problem){
System.out.println("Fastest Optimizer with " + config + "and Problem " + Problem);
}
}
最后,一个演示:
public class FactoryPatternDemo {
public static void main(String args[]){
FactoryOptModel fom = new FactoryOptModel();
OptModel superOptimizer = fom.getOptModel("Super Optimizer");
OptModel fastestOptimizer = fom.getOptModel("Fastest Optimizer");
superOptimizer.optimize("Super Config", "Super Problem");
fastestOptimizer.optimize("Fastest Config", "Slowest Problem");
}
}