[디자인 패턴] 전략 패턴

ltwes·2023년 3월 8일
0

사용 목적

알고리즘을 정의하고 캡슐화하여 동적으로 교체할 수 있게 만드는 것이 목적입니다.

사용 방법

전략 패턴을 구현하기 위해서는 전략을 추상화한 인터페이스(interface)와 이를 구현한 여러 전략, 콘텍스트(context)라고 불리는 클래스(전략을 추상화한 인터페이스를 필드로 가지고 있는 클래스)가 필요합니다.
여러 전략은 독립적인 알고리즘을 구현하며, 추상화에 의존하여 설계되어야 합니다.
추상화에 의존하여 설계된다면, 콘텍스트 클래스는 추상화한 인터페이스 필드를 통해 여러 전략을 동적으로 교체할 수 있습니다.

장점

  • 런타임 단계에서 객체 내부에 사용되는 알고리즘을 교체할 수 있다.
  • 알고리즘들을 캡슐화할 수 있다.
  • 개방-폐쇄 원칙와 의존관계 역전 원칙을 지킵니다.

단점

  • 함수형 프로그래밍을 통해 코드의 부피를 늘리지 않으면서 전략 패턴을 사용했을 때와 똑같은 이점을 누릴 수 있다.

예제 코드

https://github.com/ltwes606/design-pattern/tree/main/DesignPatten/out/production/DesignPatten/strategypattern

profile
Simple is the best

0개의 댓글