私はAspectJのタイプにディスパッチするためのより良い方法を決定しようとしています。3種類のノードを持つツリーで計算を実行しているとします。次に、簡単なJavaメソッドを記述できます。
private void computation(TreeNode node) {
if (node instanceof Node0) {
// Do stuff.
} else
if (node instanceof Node0) {
// Do stuff.
} else
if (node instanceof Node0) {
// Do stuff.
}
}
また
private void computation(TreeNode node) {
switch (node.kindNode()) {
case NODE0:
// Do stuff.
break;
case NODE1:
// Do stuff.
break;
case NODE2:
// Do stuff.
break;
}
}
または、各ノードタイプにメソッドを挿入できます。
private void Node.computation() {
throw new UnsupportedOperationException(getClass() + ".computation()");
}
private void Node0.computation() {
// Do stuff.
}
private void Node1.computation() {
// Do stuff.
}
private void Node2.computation() {
// Do stuff.
}
どの方法が好ましいのか、そしてその理由は?