brunch

You can make anything
by writing

C.S.Lewis

by 윤민섭 Nov 17. 2020

Strategy Pattern

뭘 사용할까 패턴

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


매거진의 이전글 Delegation Pattern
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari