4

ツリー ノード データの階層に集約 (または類似) メソッドを実装するときに問題が発生します。ご覧のとおり、ここでは Generics が少し過剰に使用されていますが、これは私にとって満足のいくものではありません。私の質問は、それ を実装するより良い方法はありますか?

現在の状況 (関係のない詳細を削除):

public interface AggregableTreeData<T extends AggregableTreeData> {
  void aggregate(T from);   
}

public abstract class FruitTreeData<T extends FruitTreeData<?>> 
      implements AggregableTreeData<T> {

  private BigDecimal size = BigDecimal.ZERO;

  @Override
  public void aggregate(T from) {
    this.size = this.size.add(from.size);
  }
}

public class OrangeTreeData<T extends OrangeTreeData<?>> 
    extends  FruitTreeData<T> {

  private boolean ripened = false;

  @Override
  public void aggregate(T from) {
    this.ripened = this.ripened || from.ripened;
  }
}

さらに、次のようなツリー データ集計を実行するメソッドがあります。

//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());
  }
}
4

1 に答える 1

1

複合パターンの仕事のように見えます。

于 2012-09-20T08:00:39.757 に答える