定義枚舉的操作:
enum Operation {
PLUS {
@Override int operate(int a, int b) { return a + b; }
},
MINUS {
@Override int operate(int a, int b) { return a - b; }
},
// etc, for others.
;
abstract int operate(int a, int b);
}
然後定義一個ActionListener
子類它接受一個Operation
作爲參數:
class MyActionListener implements ActionListener {
final Operation operation;
MyActionListener(Operation operation) {
this.operation = operation;
}
@Override public void actionPerformed(ActionEvent evt) {
int a = Integer.parseInt(n1.getText());
int b = Integer.parseInt(n2.getText());
int result = operation.operate(a, b);
JOptionPane.showMessageDialog(null, result);
}
}
然後作爲添加這個類的一個實例每個按鈕的事件監聽器:
jButton1.addActionListener(new MyActionListener(Operation.PLUS));
jButton2.addActionListener(new MyActionListener(Operation.MINUS));
創建一個抽象類並使用繼承。或者創建一個班級並使用組合。或者使用觀察者模式。或者裝飾者模式。或者戰略模式(哦,等待那是構圖)。有很多選擇。我的建議;研究組成和戰略模式。它在頭部第一個設計模式書中寫得詳細而且簡單。不能在我的手機上寫一個例子。抱歉 – Randy