본문 바로가기
이론/디자인패턴

[디자인 패턴] 전략 패턴 Strategy Pattern

by 6161990 2021. 6. 6.


📌 Strategy pattern

전략 패턴으로 불리며, 객체 지향의 꽃이다. 

유사한 행위들을 캡슐화하여, 

객체의 행위를 바꾸고 싶은 경우 직접 변경하는 것이 아닌 

전략만 변경하여 유연하게 확장하는 패턴 
SOILD 중에서 개방 폐쇄 원칙과 의존 역전 원칙을 따른다. 

 

전략패턴의 예 

 

Strategy Pattern 에서는 이것들이 필요하다.

전략 메서드를 가진 전략 객체

전략 객체를 사용하는 컨텍스트

전략 객체를 생성해 컨텍스트에 주입하는 클라이언트 

 

 

 

인코딩을 전략패턴을 이용해보자.

Encoding 전략 인터페이스

 

Encoding 전략을 받아 인코딩하는 Encoder 클래스

 

 

인코딩 전략 1  Normal Strategy

 

인코딩 전략 2  Base64 Strategy
인코딩 전략 3  Append Strategy

 

 

 

라인 리딩

 

13   전략객체를 사용하는 컨텍스트 생성

16,18,31    전략 메서드를 가진 전략 객체 생성

23,27,31   컨텍스트에 전략 객체 세팅

(31 은 전략객체 생성과 컨텍스트에 세팅을 한꺼번에 진행)

24,28,32   메세지를 세팅해놓은 컨텍스트에 가져와 String 변수에 담기

25,29,32   출력

 

 

 

결과

각기 다른 전략으로 출력된 메세지들

 


 

정리하자면, 


전략 메서드를 가진 전략 객체

Normal Strategy, Base64 Strategy, Append Strategy


전략 객체를 사용하는 컨텍스트

Encoder


전략 객체를 생성해 컨텍스트에 주입하는 클라이언트

Main