有人告诉我“为数据库对象建模一个抽象容器,该容器构造接受子变量的可变参数,然后在不重复代码的情况下公开一些子检查功能”。
这暗示了“计算孩子的数量”、“按标识符查找”等内容。
为简单起见,下面的代码只有一个来自基本抽象 DatabaseObject 类型的字段(即名称),但真正的代码具有诸如“标识符”之类的东西和一些复杂的元数据查找噱头。
这个想法当然很有用,但只要看看我开始编写的代码就让我想吐:如果我继续沿着这条路走下去,那将是一个纠缠的弗兰肯斯坦。有什么办法可以把它变成像样的Java?有什么设计模式可以参考吗?(想到复合...)
前提:要共享的实际功能很有用,并且确实适用于任何潜在的可嵌套类型(模式有表,表有列,复合索引有子索引等),尤其是标识符查找......
...但是“必须有更好的方法”。我感觉到我内心的声音在说“每当你写这样的代码时,就给自己一巴掌”。
帮助 :)
public abstract class DatabaseContainerObject<ChildType extends DatabaseObject>
extends DatabaseObject {
protected List<ChildType> children;
public DatabaseContainerObject(String name, ChildType... children) {
super(name);
this.children = new ArrayList<ChildType>(children.length);
this.children.addAll(Arrays.asList(children));
}
protected List<ChildType> getChildren() {
return Collections.unmodifiableList(children);
}
... count ...
... find ...
... sort ...
... remove ...
...
}