配置参数的分层数据结构

时间:2018-07-17 19:09:07

标签: java data-structures

我正在编写带有几个配置参数的设置例程(目前可以是intdoubleString)。为了避免长方法签名,我想创建一个数据结构来存储这些参数。主要的设置例程调用了几种方法/工厂,每个方法/工厂都有自己的一组必需参数,我只想将数据结构的相关部分传递给每个例程。

我最初的想法是使用某种类似于递归/树的字典结构,其中String键可以与值或行为与顶层树完全相同的子树相关联。

下面是我要尝试做的一个粗略示例:

public class A {
  // some common methods here
}

public class A1 extends A {
  public A1(int x, double y) {
    // do stuff
  }
}

public class A2 extends A {
  public A2(double z) {
    // do stuff
  }
}

public A SetupA(ConfigOptions opts) {
  if (opts.get("typeA").equals("A1")) {
    return SetupA1(opts.get("A1opts"));
  } else {
    return SetupA2(opts.get("A2opts"));
  }
}

public A1 SetupA1(ConfigOptions A1opts) {
  return new A1(A1opts.get("x"), A1opts.get("y"));
}

public A2 SetupA2(ConfigOptions A2opts) {
  return new A2(A2opts.get("z"));
}

当我填写ConfigOptions结构时,我想要一个字符,例如:,用于分隔树的各个级别。即对于上面的示例,我可以指定我想要一个A2对象,z = 1.0像这样:

opts.set("typeA", "A2");
opts.set("A2opts:z", 1.0);

我知道我刚刚布置的内容无法正常工作,因为它不是类型安全的。对接口的哪些修改和/或我认为可以实现我的目标的实现技术是什么?

注释:

  • 设置例程的一次性成本相对较低。因此,对我来说,可读性和便捷的界面是优先于速度的。
  • 这对我来说是一个学习项目,因此我正在寻找不依赖于外部库或内置集合类的解决方案。
  • 数据结构不需要考虑错误检查,因为它将由接收参数的例程处理。

0 个答案:

没有答案