전략 패턴(Strategy Pattern) 은 객체의 행위를 동적으로 변경하고 싶은 경우, 코드를 직접 수정하는 것이 아닌 추상화된 전략의 구현만을 바꿔 객체의 행위를 변경하는 디자인 패턴입니다. 자바 언어의 요소와 함께 설명해 드리자면, 객체의 행위를 Interface로 정의하고, Interface의 메서드를 구현하는 구현체들을 주입하는 것이 전략 패턴의 대표적인 형태입니다.
class Car {
private final MoveStrategy strategy;
private final int position;
public Car(MoveStrategy strategy, int position) {
this.strategy = strategy;
this.position = position;
}
public Car move(int input) {
if(strategy.isMovable(input)) {
return new Car(strategy, car + 1);
}
return this;
}
}
interface MoveStrategy {
boolean isMovable(int input);
}
class EvenNumberMoveStrategy implements MoveStrategy {
@Override
public boolean isMovable(int input) {
return (input % 2) == 0;
}
}
class OddNumberMoveStrategy implements MoveStrategy { ... }
class PrimeNumberMoceStrategy implements MoveStrategy { ... }
주어진 숫자에 따라서 자동차의 움직임을 결정하는 요구사항이 존재하는 경우, 위 예시처럼 MoveStrategy 타입 필드를 선언하고 외부에서 이를 구현한 전략을 주입받도록 구현하면 유연하게 자동차의 움직임 전략을 교체할 수 있습니다.
'4차산업혁명의 일꾼 > 개발문답' 카테고리의 다른 글
Next.js를 사용하는 이유가 무엇인가요? (1) | 2025.06.06 |
---|---|
위치를 동적으로 변경할 때 css 속성 중 transform과 position 중 어떤 것을 선호하시나요? (2) | 2025.06.05 |
CI/CD란 무엇인지 설명해주세요 (2) | 2025.06.04 |
단일 장애 지점(SPOF)이란 무엇인가요? (2) | 2025.06.04 |
JWT 특징과 주의 사항을 설명해주세요. (0) | 2025.06.03 |