设计模式之单元素模式与观察者模式

来源:互联网 发布:程序员的自我修养书评 编辑:程序博客网 时间:2024/04/30 10:25
<?php /** * * @author http://weibo.com/codersay*单元素模式require_once("DB.php"); class DatabaseConnection { public static function get() { static $db = null; if ( $db == null ) $db = new DatabaseConnection(); return $db; }private $_handle = null; private function __construct(){ $dsn = 'mysql://root:password@localhost/photos'; $this->_handle =& DB::Connect( $dsn, array() ); } public function handle() { return $this->_handle;} }  print( "Handle = ".DatabaseConnection::get()->handle()."\n" );  print( "Handle = ".DatabaseConnection::get()->handle()."\n" );*///观察者模式interface IObserver {function onChanged( $sender, $args ); } interface IObservable {function addObserver( $observer ); } class UserList implements IObservable {private $_observers = array(); public function addCustomer( $name ) { foreach( $this->_observers as $obs ) $obs->onChanged( $this, $name ); } public function addObserver( $observer ) {$this->_observers []= $observer; } }class UserListLogger implements IObserver {public function onChanged( $sender, $args ) {echo( "'$args' added to user list\n" );} }$ul = new UserList(); $ul->addObserver( new UserListLogger() ); $ul->addCustomer( "Jack" );  ?>

原创粉丝点击