전략 패턴

전략 패턴은 실행 중에 바뀔 수 있는 알고리즘이나 행위를 인터페이스로 분리하고, 구체 전략 객체를 교체해 동작을 바꾸는 디자인 패턴입니다.

핵심 개념

구조

Client -> Context -> Strategy(interface)
                         ├─ ConcreteStrategyA
                         ├─ ConcreteStrategyB
                         └─ ConcreteStrategyC

Java 예시

interface MoveStrategy {
    boolean isMovable(int input);
}

class EvenNumberMoveStrategy implements MoveStrategy {
    @Override
    public boolean isMovable(int input) {
        return input % 2 == 0;
    }
}

class Car {
    private final MoveStrategy strategy;
    private final int position;

    Car(MoveStrategy strategy, int position) {
        this.strategy = strategy;
        this.position = position;
    }

    Car move(int input) {
        if (strategy.isMovable(input)) {
            return new Car(strategy, position + 1);
        }
        return this;
    }
}

장점

주의사항

핵심 정리

전략 패턴은 변하는 행위를 객체로 분리해 조합으로 교체하는 패턴입니다.

조건문이 복잡해지거나 알고리즘 교체 가능성이 높은 경우에 유용합니다.

→ 전략 패턴에 대해서 설명해주세요

CSLOG에서 보기