>백엔드 개발 >PHP 튜토리얼 >getasynckeystate PHP 디자인 패턴 상태 상태 패턴

getasynckeystate PHP 디자인 패턴 상태 상태 패턴

WBOY
WBOY원래의
2016-07-29 08:45:47930검색

상태 상태 모드는 GOF의 23개 모드 중 하나이며 명령 모드와 마찬가지로 행동 모드이기도 합니다. 상태 모드는 명령 모드와 매우 유사하며 "인터페이스 구현 클래스" 모드를 적용하고 인터페이스 지향 프로그래밍 원리를 구현합니다.
상태 패턴은 객체 생성 패턴으로, 객체의 내부 상태가 변경되면 객체의 동작이 변경되도록 하는 것입니다. 더 일반적인 예는 네트워크 연결을 나타내는 TCPConnection 클래스에 있습니다. TCPConnection 개체의 상태는 연결이 설정됨(설정됨), 수신 대기 중, 연결이 닫혀 있음(닫힘) 등 여러 가지 상태 중 하나입니다. . TCPConnection 객체는 다른 객체로부터 요청을 받으면 자체 상태에 따라 다르게 응답합니다.
예를 들어 열기 요청의 결과는 연결이 닫혔는지 아니면 연결이 설정되었는지에 따라 달라집니다. 상태 모드는 TCPConnection이 각 상태에서 어떻게 다른 동작을 나타내는지 설명합니다. 이 모델의 핵심 아이디어는 네트워크의 연결 상태를 나타내기 위해 TCPState라는 추상 클래스를 도입하는 것입니다. TCPState 클래스는 다양한 작동 상태를 나타내는 다양한 하위 클래스에 대한 공용 인터페이스를 선언합니다. TCPState의 서브클래스는 특정 상태와 관련된 동작을 구현합니다. 예를 들어 TCPSetup 및 TCPClosed 클래스는 각각 TCPConnection의 연결 설정 및 닫힌 상태에 특정한 동작을 구현합니다.
예를 들어, 사람에게는 화남, 행복함, 미쳤음과 같은 상태가 있습니다. 이러한 상태에서 동일한 일을 해도 결과가 달라질 수 있으며, 사람의 기분은 이 세 가지 상태를 순환할 수 있습니다. 기분 상태 클래스를 사용하여 사람의 기분을 표현하고, 미친, 해피, 앵그리 클래스를 사용하여 다양한 기분을 표현합니다.
먼저 예시를 살펴보겠습니다:

코드 복사 코드는 다음과 같습니다:


/**
* 상태 패턴
*
* 내부 상태가 변경되면 객체의 동작을 변경하여 객체가 속한 클래스를 수정하는 것처럼 보이게 합니다.
*
*/
인터페이스 상태
{
공용 함수 핸들($state)
공용 함수 디스플레이()
}
클래스 컨텍스트
{
비공개 $_state = null
공용 함수 __construct($state)
{
$this->setState($state)
}
공용 함수 setState ($state)
{
$this->_state = $state;
}
공개 함수 요청()
{
$this->_state->display ();
$this->_state->handle($this)
}
}
StateA 클래스가 State를 구현합니다.
{
공용 함수 핸들($context)
{
$context->setState(new StateB());
}
공용 함수 display()
{
echo "state A
";
}
}
StateB 구현 상태
{
공용 함수 핸들($context)
{
$context->setState(new StateC()); 🎜>}
공용 함수 표시()
{
echo "state B
"
}
}
StateC가 State를 구현함
{
공용 함수 핸들($ context)
{
$context->setState(new StateA())
}
공용 함수 디스플레이()
{
echo "state C
";
}
}
// 인스턴스화
$objContext = new Context(new StateB());
$objContext->request();
$objContext ->request();
$objContext->request()
$objContext->request(); >

상태 모드를 이해하는 데는 두 가지 핵심 사항이 있습니다.
1. 일반적으로 명령 모드 인터페이스에는 한 가지 방법만 있습니다. 상태 모드 인터페이스에는 하나 이상의 메서드가 있습니다. 또한 상태 패턴 구현 클래스의 메서드는 일반적으로 값을 반환하거나 인스턴스 변수의 값을 변경합니다. 즉, 상태 패턴은 일반적으로 객체의 상태와 관련이 있습니다. 구현 클래스의 메서드에는 인터페이스의 메서드를 재정의하는 다양한 기능이 있습니다. 명령 모드와 마찬가지로 상태 모드도 if...else와 같은 조건 선택 문을 제거하는 데 사용할 수 있습니다.

2. 주요 목적은 인스턴스 변수로서 객체 참조라는 것입니다. 명령 모드를 사용하는 주요 방법은 매개변수 콜백 모드입니다. 명령 인터페이스는 메소드 매개변수로 전달됩니다. 그런 다음 메서드 본문에서 인터페이스를 다시 호출합니다. 상태 모드를 사용하는 주요 방법은 인스턴스 변수로서 set 속성 메소드나 생성자를 통해 상태 인터페이스의 특정 구현 클래스의 인스턴스를 전달하는 것입니다. 따라서 명령 모드와 상태 모드의 유사점과 차이점을 다음과 같이 비교할 수 있습니다.
상태 모드와 명령 모드는 모두 매우 일반적으로 사용되며 상대적으로 작은 세분성 모드이며 더 큰 모드의 일부입니다. 기본적으로 상태 모드와 명령 모드는 매우 유사합니다. 개발자가 단일 사례와 다중 사례에 대해 명확하게 이해하고 있다면 두 가지 모드로 나뉘지 않아도 문제가 없습니다.
위 내용은 getasynckeystate의 내용을 포함하여 PHP 디자인 패턴인 State State 모드를 소개하고 있어 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.