2016-06-14 13 views
-4

私は以下の図のような簡単な電卓を作ろうとします。しかし、私が書きたい:Javaで効率的にする方法

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) 
{           
     number1 = Integer.parseInt(n1.getText()); 
     number2 = Integer.parseInt(n2.getText()); 
     JOptionPane.showMessageDialog(null,(number1+number2)); 

このコードは、すべてのボタンに、どのように私は共通の場所にいくつかの簡単なヘルパーメソッドについて

enter image description here

+1

抽象クラスを作成し、継承を使用します。または、クラスを作成して構図を使用します。または、オブザーバーパターンを使用します。またはデコレータパターン。または戦略パターン(ああ、構図を待つ)。多くの選択肢。私のアドバイス。構成と戦略パターンを調べる。それはヘッドの最初のデザインパターンの本で詳細かつシンプルに書かれています。私の電話に例を書くことはできません。ごめんなさい – Randy

答えて

2

方法を宣言することによってそれを行うだろうか?

private int getNumber1() { 
    return Integer.parseInt(n1.getText()); 
} 
private int getNumber2() { 
    return Integer.parseInt(n2.getText()); 
} 

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) 
{           
    JOptionPane.showMessageDialog(null, getNumber1() + getNumber2()); 
} 
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) 
{           
    JOptionPane.showMessageDialog(null, getNumber1() - getNumber2()); 
} 
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) 
{           
    JOptionPane.showMessageDialog(null, getNumber1() * getNumber2()); 
} 
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) 
{           
    JOptionPane.showMessageDialog(null, getNumber1()/getNumber2()); 
} 
1

操作の列挙を定義:

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)); 
関連する問題