>  기사  >  백엔드 개발  >  php_php 기술의 관찰자 패턴의 간단한 예

php_php 기술의 관찰자 패턴의 간단한 예

WBOY
WBOY원래의
2016-05-16 20:25:34856검색

관찰자 패턴은 서로 상호 작용하는 둘 이상의 클래스를 포함하는 디자인 패턴의 일반적인 패턴입니다. 이 모드를 사용하면 클래스가 다른 클래스의 상태를 관찰할 수 있으며, 관찰된 클래스의 상태가 변경되면 관찰자에게 이를 알리고 해당 상태를 업데이트합니다.

php의 SPL 표준 클래스 라이브러리는 구현을 위해 SplSubject 및 SplObserver 인터페이스를 제공합니다. 관찰 클래스를 주제라고 하며 관찰을 담당하는 클래스를 관찰자라고 합니다. 이 모드는 SplSubject 클래스가 특정 상태를 유지하는 모드입니다.

이 상태가 변경되면 알림 메소드가 호출됩니다. 알림 메소드가 호출되면 이전에 Attach 메소드를 사용하여 등록된 모든 SplObserver 인스턴스의 업데이트 메소드가 호출됩니다.

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

DemoSubject 클래스는 SplSubject를 구현합니다.{
비공개 $관찰자, $value;

공개 함수 __construct(){
            $this->observers = array();
}

공용 함수 연결(SplObserver $observer){
            $this->observers[] = $observer;
}

공용 함수 분리(SplObserver $observer){
If($idx = array_search($observer, $this->observers, true)){
               unset($this->observers[$idx]);
}
}

공개 함수 알림(){
foreach($this->관찰자는 $observer로){
$observer->update($this);
}
}

공개 함수 setValue($value){
$this->값 = $값;
$this->notify();
}

공개 함수 getValue(){
          $this->값 반환
}
}

DemoObserver 클래스는 SplObserver를 구현합니다.{
공개 기능 업데이트(SplSubject $subject){
echo '새 값은 '입니다. $subject->getValue();
}
}

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