[생성패턴]전략 패턴( Strategy Pattern )

seyeong oh·2022년 12월 2일

JAVA

목록 보기
5/6

전략 패턴 ( Strategy Pattern )이란?

객체들이 할 수 있는 행위 각각에 대해 전략 클래스를 생성하고, 유사한 행위들을 캡슐화 하는 인터페이스를 정의하여,
객체의 행위를 동적으로 바꾸고 싶은 경우 직접 행위를 수정하지 않고 전략을 바꿔주기만 함으로써 행위를 유연하게 확장하는 방법을 말한다.
간단히 말해서 객체가 할 수 있는 행위들 각각을 전략으로 만들어 놓고, 동적으로 행위의 수정이 필요한 경우 전략을 바꾸는 것만으로 행위의 수정이 가능하도록 만든 패턴이다.

장점

  • 전략 사용자(context)의 코드 변경 없이 새로운 전략을 추가 할 수 있다.
  • 이를 통해 if - else 분기를 제거할 수 있다.
  • if - else 분기를 제거하면, 단일 책임 원칙을 준수하기 더 수월해진다.
  • 확장에 유리한 코드를 작성할 수 있다.
  • 새롭게 필요한 전략 콘크리트 클래스를 쉽게 만들 수 있다.
  • 개방 폐쇄 원칙을 준수한 코드 작성이 가능하다.
  • 런타임에 전략을 변경시킬 수 있다.

[단점]

  • 어플리케이션에 들어가는 모든 전략을 알고 있어야 한다.
  • 클래스로 분리한 각 전략들이 어느 상황에 사용되어야 할 지 알고 있어야 한다.
  • 이 같은 특성이 어쩌면 유지보수를 더 힘들게 할 수도 있다.
  • 전략을 추상화한 인터페이스가 효율적이지 못할 수 있다.
  • 어떤 전략 콘크리트 객체에서는 사용하지 않는 메서드들 역시 전략 인터페이스에 정의해 주어야 한다.

0개의 댓글