전략 패턴 (Strategy)
전략 패턴(Strategy Pattern)은 실행 도중(Runtime)에 객체의 동작 방식(알고리즘)을 마음대로 바꿔치기(Swap)할 수 있게 해주는 패턴입니다.
RPG 게임 캐릭터가 무기를 검에서 활로 바꾸면 공격 동작이 완전히 달라집니다. 이때 캐릭터 클래스 안에 수많은 if-else문을 넣지 않고, 무기 자체를 하나의 '전략 인터페이스'로 캡슐화하여 조립(Composition)하는 방식으로 결합도를 낮춥니다.
// Strategy
interface SortingStrategy {
void sort(int[] array);
}
class BubbleSort implements SortingStrategy {
public void sort(int[] array) {
System.out.println("버블 정렬로 정렬합니다.");
}
}
class QuickSort implements SortingStrategy {
public void sort(int[] array) {
System.out.println("퀵 정렬로 정렬합니다.");
}
}
// Context
class SortManager {
private SortingStrategy strategy;
// 전략을 동적으로 교체
public void setStrategy(SortingStrategy strategy) {
this.strategy = strategy;
}
public void executeSort(int[] array) {
strategy.sort(array);
}
}
public class Main {
public static void main(String[] args) {
SortManager manager = new SortManager();
int[] data = {3, 1, 4, 1, 5};
manager.setStrategy(new BubbleSort());
manager.executeSort(data); // 버블 정렬
manager.setStrategy(new QuickSort());
manager.executeSort(data); // 퀵 정렬
}
}