<?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" );
?>