CS Study :

디자인 패턴 : 전략 패턴(strategy pattern)

Ario 2023. 1. 27. 01:55

전략 패턴은 정책 패턴(policy pattern)이라고도 하며,
객체의 행위를 바꾸고 싶은 경우 '직접' 수정하지 않고 전략이라고 부르는 '캡슐화한 알고리즘'을 컨텍스트 안에서
바꿔주면서 상호 교체가 가능하게 만드는 패턴이다.

 

우리가 어떤 것을 구매할 때 네이버페이, 카카오페이 등 다양한 방법으로 결제하듯이 어떤 아이템을 살 때 

결제 '전략'만 바꿔서 두 가지 방식으로 결제하는 것처럼 말이다.

 

대충 이런식

 

전략 패턴의 장점 으로는 
예를 들어 전략 패턴을 사용하지 않았을때는 단순히 하나의 클래스에 if~else if로 구분지어야 했고, 프로그램이 복잡한 로직이라면
코드를 추가할 때 단순히 복사 붙여넣기로 처리하게 되는데 추후에 관리가 굉장히 어려워지는 것을
클래스 별로 나누어 컨텍스트 코드의 변경 없이 새로운 전략을 추가 할 수 있다는 점이다.
즉, 요구사항이 변경되었을 때 기존의 코드를 변경하지 않아도 되고 새로운 전략에 대해서는 새로운 클래스를 통해 관리하기 때문에
OCP의 원칙을 준수할 수 있다. (소프트웨어 개체의 행위는 확장할 수 있어야 하지만, 이때 개체를 변경해서는 안 된다)

 

전략 패턴의 단점은

간단히 설명했을 때 컨텍스트에 적용되는 알고리즘의 수가 적다면 클래스를 많이 나누어 관리하는 것보다
하나의 클래스에서 분기를 타는게 더 편하다.