デザインパターン > ファクトリ(Factory) ファクトリ(Factory) †区分値などのデータ状態に応じて生成するインスタンスを切り替える必要がある場合などに、 ストラテジ(Strategy) †データの状態(区分値)などに応じてビジネスロジックを丸ごと入れ替える事ができる。 Factory、Strategy を使用しない場合 †メインロジック public class MyMainProc { public static void main(String[] args){ ・ ・ if (hogeKbn == 1) { MyLogicA logicA = new MyLogicA(); if (logicA.check()){ logicA.update(); } } else if (hogeKbn == 2) { MyLogicB logicB = new MyLogicB(); if (logicB.check()){ logicB.update(); } } } } Factory、Strategy を使用した場合 †メインロジック public class MyMainProc { public static void main(String[] args){ ・ ・ MyLogicIf myLogic = MyFactory.create(hogeKbn); if (myLogic.check()){ myLogic.update(); } } } Factory定義 public class MyFactory { public static MyLogicIf create(int kbn){ if (kbn == 1) { return new MyLogicA(); } else if (kbn == 2) { return new MyLogicB(); } } } Strategy の Interface定義 public Interface MyLogicIf { public abstract boolean check(); public abstract void update(); } 区分値1用の処理 public class MyLogicA implements MyLogicIf { public boolean check(){ // 区分値1用のチェック処理を記述 } public void update(){ // 区分値1用の更新処理を記述 } } 区分値2用の処理 public class MyLogicB implements MyLogicIf { public boolean check(){ // 区分値2用のチェック処理を記述 } public void update(){ // 区分値2用の更新処理を記述 } } |