티스토리 뷰

Study/디자인 패턴

01 Strategy 패턴

Lkt_Programmer 2017. 9. 4. 12:40
반응형

Strategy Pattern

알고리즘의 인터페이스를 정의하고, 각각의 알고리즘은 캡슐화하여 동적으로 교체 사용

가능하도록 구현하는 디자인 패턴입니다. 클라이언트와는 독립적으로 구현되기 때문에

새로운 알고리즘을 추가하거나 기존의 알고리즘을 쉽게 변경이 가능합니다.

 

Strategy Pattern Structure

 

Context - 실제 각각의 알고리즘에 대한 인스턴스를 가짐

Interface - 각각의 알고리즘이 가져야 할 공통인터페이스 정의

Algorithm1,Algorithm2 - 실제 인터페이스 구현. 각각의 알고리즘을 프로그래밍

 

예제코드

 

 

Person_Interface은 전략패턴의 구조 중에 Interface에 해당됩니다. 알고리즘들이 공통적

으로 정의해야 할 인터페이스를 정의합니다. 즉 각각의 알고리즘은 action() 메서드에 대

해서 구현을 해야합니다.

 

 

전략 패턴 구조 중에서 Context에 해당됩니다. 실제로 각각 알고리즘의 인스턴스를

가지며 인터페이스와 동일한 메서드를 호출하게 됩니다.

 

 

Run_Person 과 Jump_Person은 전략 패턴 구조 중 Algorithm1과 Algorithem2에 대응

된다. 인터페이스를 상속받아 실제로 알고리즘 내용을 구현한다.

 

 

실제 전략 패턴을 적용하여 메인에서 구현 한 내용입니다.

15~16 Line에서 보면 person1 객체에 대한 알고리즘이 쉽게 변경 되는 걸 확인 할 수

있습니다. 뿐만아니라 '사람'의 행동을 추가 ( 알고리즘을 추가) 하고 싶다면

Person_Interface를 상속받아 구현하는 클래스를 추가만 해주면 됩니다.

 

 

결과 화면입니다.

반응형

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

06 프록시 패턴 (Proxy Pattern)  (0) 2017.09.21
05 어댑터 패턴 (Adapter Pattern)  (0) 2017.09.16
04 Builder 패턴  (0) 2017.09.14
03 Template Method 패턴  (2) 2017.09.10
02 Singleton 패턴  (0) 2017.09.09