상태 패턴
State pattern상태 패턴은 물체가 내부 상태가 변할 때 그 행동을 바꿀 수 있도록 하는 행동 소프트웨어 설계 패턴이다.이 패턴은 유한 상태 기계의 개념에 가깝다.상태 패턴은 패턴의 인터페이스에 정의된 방법의 호출로 전략을 전환할 수 있는 전략 패턴으로 해석할 수 있다.
상태 패턴은 컴퓨터 프로그래밍에서 내부 상태에 기초하여 동일한 개체에 대한 다양한 동작을 캡슐화하는 데 사용된다.이것은 물체가 조건문에 의존하지 않고 런타임에 그것의 행동을 변화시키고 따라서 유지보수를 향상시키는 더 깨끗한 방법이 될 수 있다.[1]: 395
개요

국가 디자인 패턴은 4대강이 문서화한 23개의 디자인 패턴 중 하나로 반복적인 디자인 문제를 해결하는 방법을 기술하고 있다.이러한 문제들은 구현, 변경, 테스트, 재사용하기 쉬운 객체 등 유연하고 재사용 가능한 객체 지향적인 소프트웨어의 설계를 다룬다.[3]
국가 패턴은 다음과 같은 두 가지 주요 문제를 해결하도록 설정된다.[4]
- 개체는 내부 상태가 변할 때 그 행동을 변화시켜야 한다.
- 주별 행동은 독립적으로 정의해야 한다.즉, 새로운 상태를 추가하는 것이 기존 국가의 행동에 영향을 주어서는 안 된다.
계급 내에서 직접적으로 국가별 특정한 행동을 구현하는 것은 계급이 특정한 행동에 맡기고, 계급의 변경 없이 나중에 계급과 독립적으로 새로운 상태를 추가하거나 기존 상태의 행동을 변경할 수 없게 하기 때문에 융통성이 없다.여기서 패턴은 두 가지 해결책을 설명한다.
- 각 상태에 대해 상태별 동작을 캡슐화하는 개별(상태) 개체를 정의하십시오.즉, 상태별 동작을 수행하기 위한 인터페이스(상태)를 정의하고, 각 상태에 대해 인터페이스를 구현하는 클래스를 정의한다.
- 클래스는 주별 동작을 직접 구현하는 대신 주별 동작을 현재 상태 개체로 위임한다.
이것은 클래스를 국가별 특정한 행동이 구현되는 방식과 독립적으로 만든다.새로운 상태 클래스를 정의하면 새로운 상태를 추가할 수 있다.클래스는 현재 상태 개체를 변경하여 런타임에 동작을 변경할 수 있다.
구조

함께 제공되는 UML(Unified Modeling Language) 클래스 다이어그램에서Context
클래스는 주별 특정한 행동을 직접적으로 구현하지 않는다.대신,Context
에 언급하다State
상태별 동작을 수행하기 위한 인터페이스(state.handle()
)이 만드는 것Context
주별 행동의 이행 방식과는 무관하게.그ConcreteStateA
그리고ConcreteStateB
계급이 실행하다.State
인터페이스, 즉 각 주에 대한 주별 동작을 구현(완전하게)한다.UML 시퀀스 다이어그램은 런타임 교호작용을 보여준다.
그Context
주별 행동을 서로 다른 방식으로 위임State
물건들일단.Context
전화를 하다handle(this)
현재(일반) 상태 객체에서 (ConcreteStateA
)) 연산과 호출을 수행한다.setState(ConcreteStateB)
에 관하여Context
컨텍스트의 현재 상태를 다음으로 변경하다ConcreteStateB
. 다음번에는Context
다시 전화하다.handle(this)
현재 상태 객체(ConcreteStateB
() 작업을 수행하고 컨텍스트의 현재 상태를 다음으로 변경ConcreteStateA
.
참조
- ^ a b Erich Gamma, Richard Helm, Ralph Johnson, John M. Vlissides (1995). Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley. ISBN 0-201-63361-2.
{{cite book}}
: CS1 maint: 작성자 매개변수 사용(링크) - ^ "The State design pattern – Structure and Collaboration". w3sDesign.com. Retrieved 2017-08-12.
- ^ Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides (1994). Design Patterns: Elements of Reusable Object-Oriented Software. Addison Wesley. pp. 305ff. ISBN 0-201-63361-2.
{{cite book}}
: CS1 maint : 복수이름 : 작성자 목록(링크) - ^ "The State design pattern - Problem, Solution, and Applicability". w3sDesign.com. Retrieved 2017-08-12.
![]() | Wikibook 컴퓨터 과학 디자인 패턴은 다음과 같은 주제에 관한 페이지를 가지고 있다: 다양한 언어로 된 상태 구현 |