/***************************************
***** 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은 동일한 결과에 과정을 다르게 교체하여 도출한다.
'backend' 카테고리의 다른 글
firefox가 느릴때.. (10) | 2007.08.04 |
---|---|
Java 성능개선을 위한 Programming 기법 (7) | 2007.06.27 |
awt와 swing의 차이점 (7) | 2007.06.19 |
[디자인패턴] bridge & adapter & mediator pattern (2) | 2007.06.13 |
고슴도치플러스의 서비스 홍보... (4) | 2007.05.22 |
Rss 주소 바꾸었습니다~ (12) | 2007.05.16 |
저도 Mac!을 씁니다. (4) | 2007.05.13 |
객체지향 프로그래밍. (0) | 2007.05.13 |