전략 패턴은 프로그램이 진행되면서 캡슐화된 로직을 선택할 수 있게 하는 디자인 패턴이다. 로직 실행은 인터페이스에 의존을 시키고 인터페이스를 구현한 로직들을 전달해줌으로써 분기처리 없이 유연성을 갖출 수 있다. 객체지향 원칙중 개방-폐쇄 원칙(Open-Closed Principle)을 지키기 위한 디자인 패턴이다.
예시 코드
고정할인, 또는 비율할인을 할 수 있는 쿠폰 객체를 만들었다. 쿠폰이 DiscountStrategy 인터페이스를 구현한 클래스를 주입받아서 그 클래스에 구현되어있는 전략을 사용할 수 있도록 discount 메서드를 만들어줬다.
고정할인과 비율할인 전략을 구현한 두개의 클래스이다. 할인할 금액, 비율값은 상수로 설정해두었다.
쿠폰 객체를 만들어 Strategy를 주입해주면 전략을 바꿈에 따라 다른 로직이 적용되는 것을 볼 수 있다.