Strategy 패턴은 서로 교체 가능한 알고리즘/행위의 집합을 정의하고, 각각을 캡슐화하며, 런타임에 교체 가능하게 만듭니다. 알고리즘을 동적으로 선택하고 복잡한 조건문을 피할 수 있게 하여, 유연하고 확장 가능한 코드를 촉진합니다.
Strategy 패턴이 하는 일
STRATEGY → 교체 가능한 알고리즘/행위를 공통 인터페이스 뒤에 캡슐화함:
→ strategy들의 집합을 정의함 (각각 동일한 인터페이스를 구현)
→ context는 인터페이스를 통해 strategy를 사용함 → 런타임에 strategy를 교체 가능
→ context를 변경하지 않고 행위를 동적으로 선택함
→ 행위를 하드코딩하는 대신 "조합(compose)"함 (조건문보다 합성을 선호)
예시
{ () { } }
{ () { } }
{
() { . = strategy; }
() { ..(amount); }
}
( ()).();
