뭘 사용할까 패턴
Strategy Pattern (전략 패턴)은 교환 가능한 객체들을 정의해두고 런타임에 설정하거나 변환하는 패턴입니다.
그림으로 먼저 보겠습니다.
우선 Object using a Strategy 객체와 Strategy Protocol이 연관 관계에 있는 것을 확인할 수 있습니다. Object using a Strategy 객체가 Strategy Protocol을 직접적으로 참조한다는 의미이죠.
그리고 3개의 구체 클래스 (Concrete Strategy)가 있습니다. 이 클래스들은 Strategy Protocol을 implement하고 있습니다.
아래 코드를 보겠습니다.
ViewController는 MovieRatingClient를 참조하여 UI를 구성합니다.
현재는 MovieRatingStrategy를 implement하는 IMDbClient 객체를 생성에 사용합니다. 그러므로 UI를 구성할 땐 IMDbClient 객체를 사용할 것입니다.
만약 IMDbClient를 사용하지 않는 경우라면 ViewController 생성시 다른 객체 (여기선 RottenTomatoesClient) 로 넣어줄 수 있겠죠.
이렇게 런타임시 상황에 맞게 객체를 변경할 수 있는 패턴이 Strategy Pattern 입니다.
Strategy Pattern 역시 구체 클래스에 의존하지 않고 Protocol에 의존해 코드 유연성을 높이는 디자인 패턴입니다.
읽어주셔서 고맙습니다.
Raywenderlich의 Design Patterns by Tutorials를 참고했습니다.
https://www.raywenderlich.com/books/design-patterns-by-tutorials/v3.0