디자인패턴)Strategy pattern with Java

  • 전략을 쉽게 변경할 수 있도록 설계된 디자인 패턴입니다.
  • 전략이라는 것은 목적을 달성하기 위해 일을 수행하는 방식, 규칙, 문제를 해결하는 알고리즘 등으로 해석됩니다.
  • 유연하고 재사용가능한 객체지향 소프트웨어입니다.


    • Strategy : 인터페이스나 추상클래스로 외부에서 동일한 방식으로 알고리즘을 호출하는 방법을 명시 합니다.
    • ConcreteStrategy : 스트래티지 패턴에서 명시한 알고리즘을 실제로 구형한 클래스입니다.
    • Context : 스트래티지 패턴을 이용하는 역할을 수행합니다
  • 예시
    • 게임캐릭터를 예시로 들어보겠습니다.

public interface AttackStrategy {
    public void attack();
}

public class PunchStrategy implements AttackStrategy {

    @Override
    public void attack() {
        System.out.println("펀치공격을 합니다.");

    }
    
}

public class KickStrategy implements AttackStrategy {

    @Override
    public void attack() {
        System.out.println("킥공격을 합니다.");

    }
    
}

public interface MoveStrategy {
    public void move();
}

public class WalkingStrategy implements MoveStrategy{

    @Override
    public void move() {
      System.out.println("걷고 있습니다.");
    }
}

public interface MoveStrategy {
    public void move();
}

public class main {
    public static void main(String[] argsthrows IOException{

        Character ch = new Character("human");
        ch.setAttackStrategy(new PunchStrategy());
        ch.setMoveStrategy(new WalkingStrategy());
        ch.attack();
        ch.move();

        Character ch2 = new Character("bird");
        ch2.setAttackStrategy(new KickStrategy());
        ch2.setMoveStrategy(new FlyingStrategy());
        ch2.attack();
        ch2.move();
    }
}
- 결과


댓글

가장 많이 본 글