我試圖決定哪個是更好的方式來分派在AspectJ的一個類型。 假設我正在用三種節點對一棵樹進行計算。然後,我可以寫一個簡單的Java方法:多態性的AspectJ
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.
}
哪種方法最好,爲什麼?