본문 바로가기

설계/디자인 패턴

스트래티지 패턴

개요

스트래티지 (STRATEGY) 패턴은 앞서 이야기 드린 템플릿 메소드 (TEMPLETE METHOD) 패턴과 비지니스 로직과 같은 공통으로 반복해서 사용 되는 부분을 세부 구현으로 부터 분리하는 패턴이라는 점에서 동일 합니다.

하지만 템플릿 메소드 패턴은 상속을 사용하고 스트래티지 패턴은 인터페이스를 구현 한다는 점이 차이점으로 볼 수 있습니다.

 


설명

앞서 템플릿 메소드 패턴에서 설명 드린 클래스 다이어그램과 스트래티지 패턴의 클래스 다이어그램을 비교해 차이점에 대해서 살펴 보겠습니다.

먼저 세부 구현에 대한 부분이 GrinderHandle 인터페이스로 분리되어 있는 것을 볼 수 있습니다. 그리고 실제 비지니스 로직을 가지고 있는 부분이 Grinder 클래스로 도출되어 있으며 Grinder 의 생성자에서 GrinderHandle 을 주입 받는 것을 볼 수 있습니다.

이때 GrinderHandle 인터페이스 에서는 Grinder 클래스에 대해서 아무 것도 모른 다는 점이 중요 합니다. 즉 비지니스 로직과 세부 구현이 정확하게 분리가 되어 있으며 이것은 세부 구현이 변경 되거나 비지니스 로직이 변경 되더라도 얼마든지 유연하게 코드가 변경이 될 수 있다는 것을 의미 합니다.

 


정리

  • 스트래티지 패턴은 비지니스 로직을 세부 구현으로 부터 분리하는 패턴 입니다.
  • 스트래티지 패턴의 세부 구현은 인터페이스로 정의 되며 비지니스 로직은 별도의 클래스로 구성 됩니다. 이때 비지니스 로직 클래스에서 세부 구현을 주입 받아 사용 됩니다.
  • 스트래티지 패턴의 세부 구현은 비지니스 로직 클래스에 대해 아무 것도 알지 못 합니다. 그렇기 때문에 세부 구현이 변경 되거나 비지니스 로직이 변경 되더라도 유연하게 코드를 변경 할 수 있습니다.

'설계 > 디자인 패턴' 카테고리의 다른 글

모노스테이트 패턴  (0) 2020.08.22
싱글톤 패턴  (0) 2020.08.20
파사드 패턴  (0) 2020.08.20
스트래티지 패턴  (0) 2020.08.18
템플릿 메소드 패턴  (0) 2020.08.18
커맨드 패턴  (0) 2020.08.17