我建议你使用某种工厂模式。
您应该向客户端传递有关您要创建的图表类型的“提示”,
并让 ChartFactory 为您创建它。
这是一个代码片段:
public class ChartFactory {
public Chart createChart(ChartType, ChartParameters params) {
Chart chart = ... //Creates a chart object based on type and ChartParameters
return chart;
}
}
你可以让这个工厂成为一个单例,
所以如果你需要做一些工厂初始化,你只会做一次。ChartParameters 应该保存用于创建特定图表类型对象的参数。
它可以是键和值的简单映射,即看起来像:
public class ChartParameters {
private Map<String,Object> params = new HashMap<String,Object>();
public Object getParam(String paramName) {
return params.get(paramName);
}
//Add here more methods... maybe a CTOR that takes a map of params,
//And a method to add a parameter
}
或者这可以有另一个实现。您还可以决定为 Chart 的每个子类设置参数类(所有这些参数类都将扩展 ChartParameters),
但这可能会导致您在继承树上出现某种重复。
总而言之,
通过这种方式,您需要发送给客户端的只是图表类型和参数,它将实例化正确的图表对象。