> 백엔드 개발 > PHP 튜토리얼 > 관찰자 PHP의 관찰자 패턴

관찰자 PHP의 관찰자 패턴

WBOY
풀어 주다: 2016-07-29 08:42:21
원래의
931명이 탐색했습니다.

관찰자 패턴

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


인터페이스 주제
{
공용 함수 첨부( $Observer ); //관찰자 추가
public function Detach($Observer); //관찰자 추방
public function Notify() //조건이 충족되면 관찰자에게 알림
public function SubjectState($Subject ); //관찰 조건
}
class Boss 구현 주제
{
public $_action;
private $_Observer
public function Attach($Observer)
{
$this->_Observer[] = $Observer;
}
공용 함수 Detach($Observer)
{
$ObserverKey = array_search($Observer, $this- >_Observer) ;
if($ObserverKey !== false)
{
unset($this->_Observer[$ObserverKey])
}
}
공개 function Notify()
{
foreach($this->_Observer as $value )
{
$value->Update()
}
}
공개 함수 SubjectState( $Subject)
{
$this->_action = $Subject
}
}
추상 클래스 관찰자
{
protected $_UserName; 🎜>보호된 $ _Sub;
공용 함수 __construct($Name,$Sub)
{
$this->_UserName = $Name; 🎜>}
공용 추상 함수 Update(); //메소드를 통해 수신
}
class StockObserver는 Observer를 확장합니다
{
공용 함수 __construct($name,$sub)
{
parent ::__construct($name,$sub);
}
공용 함수 Update()
{
echo $this->_Sub->_action.$this-> ;_UserName." 도망가세요...";
}
}
$huhansan = new Boss(); // Observer
$gongshil = new StockObserver("三毛",$huhansan ); //옵저버 초기화
$huhansan->Attach($gongshil); //옵저버 추가
$huhansan->Attach($gongshil); //동일한 옵저버 추가
$huhansan ->Detach($gongshil); //기지에 있는 관찰자를 쫓아냅니다
$huhansan->SubjectState("경찰이 옵니다") //충족된 조건 충족
$huhansan- > ;Notify(); //모든 유효한 관찰자


는 관찰자 컨테이너를 상속하는 클래스(우리는 그것을 관찰자라고 부릅니다)로 대략적으로 이해할 수 있습니다. Excuse
이 인터페이스의 메소드는 다음과 같습니다. : 관찰자 추가, 관찰자 ​​추방, 관찰자 ​​알림 및 관찰 조건

관찰자를 추가하는 것은 이 컨테이너에 일부 클래스를 등록하는 것과 동일합니다. 물론 이러한 클래스는 관찰된 응답에 응답하는 메서드가 필요하다는 것을 전제로 합니다.
관찰된 컨테이너는 다양한 관찰 조건 매개변수를 허용하여 이 컨테이너에 등록된 모든 관찰자에게 알림을 표시해야 하는지 여부를 결정합니다.
일단 알림 조건이 충족되면 컨테이너의 모든 관찰자에게 해당 메소드를 호출하라는 알림이 표시됩니다. 해당 관찰자 인스턴스에 대한 변경 사항을 구현합니다
지금은 그게 전부입니다!
위 내용은 관찰자 측면을 포함하여 PHP의 관찰자 모드를 소개한 내용이 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿