php 디자인 모델의 관찰자 모델의 응용 예시
2703 단어 php 디자인 모드
관찰자 클래스:
1. 추상적인 주제 역할: 주제 역할은 모든 관찰자 대상에 대한 인용을 하나의 집합에 저장하고 각 주제는 임의로 여러 관찰자를 할 수 있다.추상적인 주제는 관찰자의 대상을 추가하고 삭제하는 인터페이스를 제공한다.
2. 추상적 관찰자 역할: 모든 구체적인 관찰자에게 하나의 인터페이스를 정의하고 관찰의 주제가 바뀔 때 자신을 갱신한다.
3. 구체적인 주제 역할: 관련 상태를 구체적인 관찰자 대상에게 저장하고 구체적인 주제의 내부 상태가 바뀔 때 등록된 모든 관찰자에게 통지한다.구체적인 주제 역할은 통상적으로 하나의 구체적인 서브클래스로 실현된다.
4. 구체적인 관찰자 역할: 구체적인 주제 대상을 저장하고 관련 상태를 저장하며 추상적인 관찰자 역할이 요구하는 업데이트 인터페이스를 실현하여 자신의 상태와 주제의 상태를 일치하게 한다.
역할:
1. 관찰자 모드의 결합도가 비교적 작다
2. 브로드캐스트 통신 지원
인터넷에 엄청 많아요.
4php 자습서에서 php 디자인 모델에 대한 설명은 주로 이론적인 소개에 국한되지만 학습 디자인 모델은 반드시 실례가 있어야 깊이 이해할 수 있다.
이 문서의 인스턴스 코드를 보십시오.
<?php
//
interface Subject{
public function attach($observer);
public function detach($observer);
public function notifyObservers();
}
//
class ConcreateSubject implements Subject{
private $_observers;
public function __construct(){
$this->_observers = array();
}
public function attach($observer){
return array_push($this->_observers,$observer);
}
public function detach($observer){
$index = array_search($observer,$this->_observers);
if($index === false || !array_key_exists($index,$this->_observers)){
return false;
}
unset($this->_observer[$index]);
return true;
}
public function notifyObservers(){
if(!is_array($this->_observers)){
return false;
}
foreach($this->_observers as $observer){
$observer->update();
}
return true;
}
}
//
interface Observer{
public function update();
}
//
class ConcreteObserver implement Observer{
private $_name;
public function __construct($name){
$this->_name = $name;
}
public function update(){
echo 'Observer',$this->_name.'has notified<br/>';
}
}
//
class Client{
public static function main(){
$subject = new ConcreteSubject();
//
$observer1 = new ConcreteObserver('Martin');
$subject->attach($observer1);
//
$subject->notifyObservers();
//
$observer2 = new ConcreteObserver('jaky');
$subject->attach($observer2);
//
$subject->notifyObservers();
// 1
$subject->deatch($observer1);
//
$subject->notifyObservers();
}
}
Client::main();
?>
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
php 디자인 모델 의 원형 모델텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.