我正在设计一个复杂的Configuration类作为API设计的一部分。 Configuration类大致如下所示..(我忽略了泛型/访问修饰符等)
class Configuration {
One obj1;
Two obj2;
}
class One {
List<Double> values;
}
class Two {
double value;
Map<String, Double> data;
}
这就是我想要完成的事情:
使用和避免哪些设计模式?
使这个类成为不可变并使用构建器模式更好吗? 或者只是在Configuration类上提供各种修改方法,这样他们就可以就地修改相同的Configuration类(在所有级别),而无需为每次更新创建新的Configuration类。我认为Builder模式仅适用于Immutable类。
问题:
答案 0 :(得分:0)
我认为你应该使用原型模式: 在您的代码中,您可以添加包含所有类型配置的地图 地图将有一个名为“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);
}
}
您还可以编写更多代码来处理配置的历史记录。 你也可以考虑制作这个班级单身人士