Strategy 패턴

뾰족머리삼돌이·2024년 9월 22일
0

디자인패턴

목록 보기
7/21

출근을 위해 목적지까지 도달하는 방법에는 여러가지 방법이 존재한다.
걸어서 가거나, 자전거를 타거나, 대중교통을 이용하거나, 자가용을 이용하는 방법 등 다양할 것이다.

출발지에서 도착지까지 이동한다는 기능의 단위에서 여러가지 전략을 선택할 수 있고, 출근이라는 기능안에 여러가지 전략에 해당하는 방법을 모두 작성하는 것으로 구현할 수 있다. 하지만, 이는 중복코드를 만들어내고 코드의 양이 늘어나는 등 유지보수에 어려움이 생긴다.

이를 해결하기 위한 패턴이 이번에 소개하는 Strategy( 전략 ) 패턴이다
핵심개념은 전략을 변경할 수 있게 설정하는 것이다. 즉, 클래스 내에서 전략을 소유하고 이를 수정할 수 있는 접근자를 제공한다.

context 내에 strategy를 필드로 가지는 Composition의 형태를 띄고있으며, setStrategy()를 통해 이를 수정할 수 있도록 구성한다. 이러한 전략의 실행을 한 메서드에서 담당함으로써 클래스에게 가해지던 책임을 줄이고 SRP를 준수한다

또한, 인터페이스 타입의 strategy를 보유함으로써 손쉽게 전략을 추가하되 context의 수정은 필요없게 되므로 OCP를 준수할 수 있다

0개의 댓글

관련 채용 정보