戦略モデル
11399 ワード
戦略モデルとは?
簡単に言えば,ばらばらに接続し,途中で特定のアルゴリズムの挙動設計モードを選択する.
こうぞう
インタフェース資料型を発表し,詳細な実装を対象とする.
例
射撃モード、弾薬の使用などの変数を含む
しかし、銃ごとに弾薬の使用が異なり、発射パターンも異なる.さらに、新たな銃を増やし続ける可能性もある.
この場合、ポリシーモードを使用して作成します.
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;
}
}
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() {
...
}
}
の最後の部分
これは一番前のモードで、ここで重要なのはインタフェースを使って設計モードの中で重要かどうかです.
Reference
この問題について(戦略モデル), 我々は、より多くの情報をここで見つけました https://velog.io/@alsrb5606/DesignPattern-전략Strategy-패턴テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol