我正在设计一个复杂的配置类,作为API设计的一部分。配置类大致如下所示。(我忽略了泛型/访问修饰符等)
class Configuration {
One obj1;
Two obj2;
}
class One {
List<Double> values;
}
class Two {
double value;
Map<String, Double> data;
}这就是我想要完成的:
使用和避免什么设计模式?
使这个类不可变并使用构建器模式更好吗?或者,只需在配置类上提供各种修改方法,这样它们就可以就地修改相同的配置类(在所有级别),而不必为每次更新创建一个新的配置类。我认为Builder模式只适用于不可变类。
问题:
发布于 2013-02-18 12:07:14
我认为您应该使用原型模式:在您的代码中,您可以添加包含所有类型配置的映射,映射将有一个名为"currentConfiguration“的键,其值将是应该加载的配置。该映射还可以包含可以存储在映射中的其他配置,并可以在需要时替换当前配置。一旦从地图中获取配置,您只需克隆配置对象,用户就可以随心所欲地这样做。更改之后,他可以使用speicifc名称在映射中保存配置。因此,用户可以获得非常接近他所需要的配置对象,并相应地配置它。代码应该如下所示:‘`public class CloudRepository {
private Map<String, Configuration> rep;
public CloudRepository(Configuration current){
rep = new HashMap<String, Configuration>();
rep.put("current", current);
}
public Configuration getConfiguration(String string){
return (Configuration) rep.get(string).clone();
}
public void addConfiguration(String name, Configuration conf){
rep.put(name, conf);
}
public void replaceCurrentConfiguration(Configuration conf){
rep.put("current", conf);
}}
您还可以编写更多代码来处理配置的历史记录。您也可以考虑让这个类是单例的。
https://stackoverflow.com/questions/14789619
复制相似问题