동작에 대한 ENUM을 정의
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);
}
을 그런 매개 변수로 Operation
을 취하는 ActionListener
서브 클래스를 정의
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