Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

別クラスで共通なメソッドを呼び出す場合

こんばんわ。
javaで初めて開発を行っています。

下記のようなコードがあり
AEntityクラスとBEntityクラスののプロパティが同じだとします。
AEntityはAテーブル、BEntityがBテーブルに紐づいています。
※将来は変わる可能性があるため、別エンティティにしています。

受け取ったパラメータによって複数箇所で処理分岐していますがメソッドは全く同じなので、つらつらと
if分を書きたくありません。
方法としてはabstractクラスを作成し
AEntityとEentityに継承させて、抽象クラスをcallするのがベストな方法でしょうか?
ほかの方法があればご教示願います。



package logic;

import entity.AEntity;
import entity.BEntity;

public class ComLogic {

    public void editEntity(String param){

        AEntity a = null;
        BEntity b =null;
        if("1".equals(param)){
            a = new AEntity();
            a.setEmpNo(1);
            a.setAddress("東京");
        }else{
            b = new BEntity();
            b.setEmpNo(2);
            b.setAddress("神奈川");
        }
        
        
        if("1".equals(param)){
            saveAEntity(a);
        }else{
            saveBEntity(b);
        }
    }
    
    private void saveAEntity(AEntity a){
        // AEnitityの登録処理
    }
    private void saveBEntity(BEntity a){
        // BEnitityの登録処理
    }
}

3

回答

93893

閲覧

3件の回答

評価

0

メソッドが同じで、登録するテーブルだけが違うのであれば、登録する
テーブルの箇所だけ条件で分岐すれば。

abstractクラスを作成し、テーブル登録の部分のみメソッドをオーバー
ライドしてそれぞれ処理を記載してもいいと思いますし。

違うのかな?

評価

0

こういうこったろうw

http://ideone.com/d4Xa1

評価

0

ロジックが全く同じなら、値をコンストラクタの引数にする
とか、staticメソッドの引数にするとかいうこともできる。
一部のロジックが異なるならコールバックさせる方法もある
(abstractではなくinterfaceを使うかもしれない)。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。