戦略モデル


戦略モデルとは?


簡単に言えば,ばらばらに接続し,途中で特定のアルゴリズムの挙動設計モードを選択する.
  • 特定のシリーズを定義するアルゴリズム、
  • 各アルゴリズム、
  • をカプセル化
  • は、これらのアルゴリズムをこのシリーズ内で互いに置換することができる.
  • こうぞう


  • javaプログラミングでは、ポリシー部分はインタフェースとして、各インタフェースの継承クラス実装詳細、メインContextクラス
    インタフェース資料型を発表し,詳細な実装を対象とする.

  • 射撃モード、弾薬の使用などの変数を含む
  • 銃というオブジェクトが作成されました.
    しかし、銃ごとに弾薬の使用が異なり、発射パターンも異なる.さらに、新たな銃を増やし続ける可能性もある.
    この場合、ポリシーモードを使用して作成します.
  • package StrategyPatternEx.Gun;
    
    import StrategyPatternEx.ShotMode.ShotMode;
    import StrategyPatternEx.UsingBullet.UsingBullet;
    
    public abstract class Gun {
        ShotMode shotMode;
        UsingBullet usingBullet;
        public Gun() {}
        public abstract void display();
    
        public void usingShotMode() {
            shotMode.shotmode();
        }
        public void usingBulletMode() {
            usingBullet.usingBullet();
        }
    
        public void setShotMode(ShotMode sm) {
            shotMode = sm;
        }
        public void setUsingBullet(UsingBullet ub) {
            usingBullet = ub;
        }
    }
  • 銃の形態を持つ客体.オブジェクトの内部では、ShotModeとUsingBulletのタイプが変数として指定されます.
  • では、変数は後述するが、インタフェースである.
  • の使用中に、戦略的変化のためにsetメソッドが作成されました.
  • package StrategyPatternEx.ShotMode;
    
    public interface ShotMode {
        public void shotmode();
    }
    package StrategyPatternEx.UsingBullet;
    
    public interface UsingBullet {
        public void usingBullet();
    }
    これらは
  • 閣が使用する戦略です.このインタフェースの内部を上書きする方法により,各クラスは詳細に実装された.
  • package StrategyPatternEx.ShotMode;
    
    public class FullAuto implements ShotMode{
        @Override
        public void shotmode() {
            System.out.println("방아쇠를 놓을 때 까지 사격");
        }
    }
    package StrategyPatternEx.UsingBullet;
    
    public class FiveFiveSixmil implements UsingBullet{
        @Override
        public void usingBullet() {
            System.out.println("5.56mm 탄환 사용");
        }
    }
    package StrategyPatternEx.Gun;
    
    import StrategyPatternEx.ShotMode.FullAuto;
    import StrategyPatternEx.UsingBullet.FiveFiveSixmil;
    
    public class GunAk47 extends Gun{
        public GunAk47() {
            shotMode = new FullAuto();
            usingBullet = new FiveFiveSixmil();
        }
        @Override
        public void display() {
            ...
        }
    }
  • はこのようにポリシーを使用して作成され、OCPの原則を維持することができる.
  • の最後の部分

  • デザインモードで最初に触れたパターンストライプパターンは、デザインモードの「ナンバーワンデザインモード」を学習します.
    これは一番前のモードで、ここで重要なのはインタフェースを使って設計モードの中で重要かどうかです.