티스토리 뷰
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 |