Exemplo n.º 1
0
 public function __construct()
 {
     echo "Tworzenie 3 konkretnych obserwatorów i konkretnego podmiotu <BR>";
     $ob1 = new ConcreteObserver();
     $ob2 = new ConcreteObserver();
     $ob3 = new ConcreteObserver();
     $subject = new ConcreteSubject();
     $subject->setObservers();
     $subject->setData("Oto twoje dane!");
     $subject->attach($ob1);
     $subject->attach($ob2);
     $subject->attach($ob3);
     $subject->notify();
     echo "Odpięcie obserwatora ob3. Powiadamiane będą ob1 i ob2<BR>";
     $subject->detach($ob3);
     $subject->notify();
     echo "Reset danych, podpięcie ob3 i dopięcie ob2, tylko ob1 i ob3 będą powiadamiane: <BR>";
     $subject->setData("Dane dla obiektów ob1 i ob3");
     $subject->attach($ob3);
     $subject->detach($ob2);
     $subject->notify();
 }
Exemplo n.º 2
0
Arquivo: 0.php Projeto: ruyicoder/php
 */
class ConcreteSubject extends Subject
{
    public $state;
}
/*
 * 具体观察者
 */
class ConcreteObserver extends Observer
{
    private $_name;
    private $_subject;
    public function __construct($name, Subject $subject)
    {
        $this->_name = $name;
        $this->_subject = $subject;
    }
    public function update()
    {
        var_dump(sprintf('观察者:%s,通知者的状态是:%s,请做出相应的反应。', $this->_name, $this->_subject->state));
    }
}
###################################################################################
$concreteSubject = new ConcreteSubject();
//通知者
$concreteObserver = new ConcreteObserver('张三', $concreteSubject);
//观察者
$concreteSubject->attach($concreteObserver);
$concreteSubject->state = 'abc';
$concreteSubject->notify();
Exemplo n.º 3
0
    {
        echo 'I must have supper.I am so hungry.<br />';
    }
}
class Observer3 extends AbstractObserver
{
    function action()
    {
        echo 'I must go to bed.<br />';
    }
}
class Observer4 extends AbstractObserver
{
    function action()
    {
        echo 'I will go to see my classmate tomorrow.<br />';
    }
}
//test
$subject = new ConcreteSubject();
$subject->add('Observer1');
$subject->add('Observer2');
$subject->add('Observer3');
$subject->notify(9);
var_dump($subject->__get('observers'));
$subject->add('Observer4');
var_dump($subject->__get('observers'));
$subject->notify(10);
$subject->splice('Observer2');
var_dump($subject->__get('observers'));
$subject->notify(14);