backend

[디자인패턴] State, Strategy Pattern

버리야 2007. 5. 30. 01:04
반응형

/***************************************

***** Design Pattern 정리 - flyburi.com 버리****

***************************************/

 

State Pattern - Design Pattern

 

Problem

1. How can you change the class of an object at run-time?

2. How can you model a finite state machine using OO techniques?

 

Example 1.

스타크래프트에서 플레이어가 테란 유닛들 중에서 마린, 벌처, 탱크에게 임의의 공격명령을 내렸을 자신의 상태에 따라 행위가 달라질 적용가능?

공격(abstract class) 이라는 하나의 공통적인 행위안에 세가지 또는 이상의 상태를 나타낼수 있습니다.

 

마린공격, 벌처공격, 탱크공격 - ConcreteState마린, ...

마린은 총을 쏠것이고, 벌처는 마인을 박거나 던지기, 탱크는 퉁퉁때리기와 시즈모드에서 공격하는것. 자신의 상태에 따라 공격하는 행위가 달라지는데 이럴때 적용가능할 같은데.. 맞나요? ^^;;

 

Example 2.

은행사이트에서 시간의 변화에 따라 (이체 이용시간) 서비스가 허용되는 상태

 

Example 3.

The State pattern allows an object to change its behavior when its internal state changes. This pattern can be observed in a vending machine. Vending machines have states based on the inventory, amount of currency deposited, the ability to make change, the item selected, etc. When currency is deposited and a selection is made, a vending machine will either deliver a product and no change, deliver a product and change, deliver no product due to insufficient currency on deposit, or deliver no product due to inventory depletion. [Michael Duell, "Non-software examples of software design patterns", Object Magazine, Jul 97, p54

  

State Pattern 이렇다.

객체의 행위가 별도로 분리된 상태(state) 따라 달라지도록 해준다.

이때 상태 정보는 클래스로 정의된다.

상태의 정보를 캡슐화하여 프로그램 실행 중에 특정 객체의 행위를 변경하는 패턴

 

 

참고할 URL

 

충북대학교에서 번역한 자료

Using the STATE Design Pattern in Java(예제)

 

Strategy Pattern

 

Strategy Pattern은 이렇다.

알고리즘군의 교체

동일 목적 알고리즘의 선택 적용 문제

프로그램 작성하다가 한가지 작업을 수행하는데 사용할 수 있는 알고리즘이 여러개 존재하는 경우

 

적용시기와 효과가 비슷하게 보이는 State Pattern Strategy Pattern의 차이점

State Pattern은 상태에 따라 행위가 달라지지만, Strategy Pattern은 동일한 결과에 과정을 다르게 교체하여 도출한다.

반응형