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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值