디자인 패턴 1강. Strategy 패턴

기타/[고급객체지향 프로그래밍]

2019. 10. 18. 16:48

 

[전략 패턴] = policy 패턴

Define a family of algorithms, encapsulate each one, and make them interchangeable, Strategy lets the algorithm vary independently from clients that use it.

 

: 알고리즘 교체해서 같은 문제를 다른 방법으로 쉽게 해결할 수 있도록 도와주는 패턴

: 알고리즘군을 정의하고 각각을 캡슐화하여 교환해서 사용가능하게 한다.

 

 

[전략 패턴 기본 구조]

-

- Context 클래스 : 캡슐화된 알고리즘을 멤버 변수로 포함

- Strategy 인터페이스 : 각종 전략들 받아서 전달

 

 

[전략패턴 구현하기]

: 바뀌는 부분과 그렇지 않는 부분 분리하기

: 특정 행동을 Context 클래스에 구현하지 않고, 독립적으로 새로운 클래스에서 구현한다

: 생성자를 이용해 모델화

 

 

[전략패턴 예시 코드]

#예시 1 : Duck

더보기
예시 Duck uml 구조

: 바뀌는 부분 (Quack, Fly)를 분리

: swim은 모두 동일해서 context에 구현

: display는 duck마다 다르기때문에 context에 구현(duck마다 override 필요)

 

 

# 예시2 : setWeapon

더보기

# 예시3 : 가위바위보

더보기

# 예제4 - Sorter

더보기
version 1

 

version 2(Generic 버전)