간단하게 말하면 느슨하게 연결해서 도중에 특정 알고리즘을 선택하는 행위 디자인 패턴
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() {
...
}
}