php設計模式--觀察者模式

來源:互聯網
上載者:User

<?php/**** 被觀察者**/class Subject implements SplSubject {protected $_value;protected $_observers;/*** 建構函式** @return void*/public function __construct() {$this->_observers = new SplObjectStorage();}/*** 追加觀察者* @see SplSubject::attach()*/public function attach(SplObserver $observer) {$this->_observers->attach($observer);}/*** 拋棄觀察者* @see SplSubject::detach()*/public function detach(SplObserver $observer) {$this->_observers->detach($observer);}/*** 通知觀察者* @see SplSubject::notify()*/public function notify() {foreach ($this->_observers as $observer) {$observer->update($this);}}/*** 設定最新值** @param mixed $value* @return*/public function setValue($value) {$this->_value = $value;$this->notify();}/*** 擷取最後更新的值** @return mixed*/public function getValue() {return $this->_value;}}/*** 觀察者**/class Observer implements SplObserver {/\*** @see SplObserver::update()*/public function update(SplSubject $subject) {echo 'i know you '.$subject->getValue();}}header('Content-type:text/html;charset=utf-8');date_default_timezone_set('Asia/Shanghai');error_reporting(E_ALL);$subject = new Subject();$observer = new Observer();$subject->attach($observer);$subject->setValue('updated');

 

本文出自 “phper” 部落格,請務必保留此出處http://janephp.blog.51cto.com/4439680/1286698

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.