Java 在树节点数据中构造和实现聚合(或类似)方法的最佳模式
在树节点数据的层次结构上实现聚合(或类似)方法时,我遇到了一个问题。可以看出,这里泛型有点过度使用,这让我不满意,所以我的问题是: 有没有更好的方法来实现它(可能避免层次结构下聚合方法中对象的强制转换)? 当前情况(除去不相关的细节):Java 在树节点数据中构造和实现聚合(或类似)方法的最佳模式,java,design-patterns,generics,tree,Java,Design Patterns,Generics,Tree,在树节点数据的层次结构上实现聚合(或类似)方法时,我遇到了一个问题。可以看出,这里泛型有点过度使用,这让我不满意,所以我的问题是: 有没有更好的方法来实现它(可能避免层次结构下聚合方法中对象的强制转换)? 当前情况(除去不相关的细节): 公共接口AggregableTreeData{ 空隙集料(T); } 公共抽象类果树数据> 果树{ 私有布尔成熟=假; @凌驾 公共空隙骨料(T自){ 成熟的;成熟的;成熟的;成熟的; } } 此外,我还有一个执行树数据聚合的方法,它如下所示: //child
公共接口AggregableTreeData{
空隙集料(T);
}
公共抽象类果树数据>
果树{
私有布尔成熟=假;
@凌驾
公共空隙骨料(T自){
成熟的;成熟的;成熟的;成熟的;
}
}
此外,我还有一个执行树数据聚合的方法,它如下所示:
//child.getData() and node.getData() is of type <T extends AggregableTreeData<T>>
void aggregateNode(TreeNode node) {
for (TreeNode child : node.getChildren()) {
aggregateNode(child);
node.getData().aggregate(child.getData());
}
}
//child.getData()和node.getData()属于
无效聚合节点(树节点){
for(TreeNode子节点:node.getChildren()){
集合节点(儿童);
node.getData().aggregate(child.getData());
}
}
看起来很像复合模式的作业 “这让我不满意”,为什么?这将很难避免泛型,因为它只适用于不变参数类型。也许你看的不满意-因为这里唯一的原因是泛型(和丑陋的构造,比如“水果树数据”)
//child.getData() and node.getData() is of type <T extends AggregableTreeData<T>>
void aggregateNode(TreeNode node) {
for (TreeNode child : node.getChildren()) {
aggregateNode(child);
node.getData().aggregate(child.getData());
}
}