디자인패턴)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[] args) throws 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();
}
}
댓글
댓글 쓰기