註冊表模式解析

註冊表模式:實際上是單例模式註冊表類提供靜態方法(或單例對象的實例化方法)來讓其它對象訪問其中的數據(通常是對象)。整個系統中的每個對象都可以訪問這些數據對象。

abstract class Registry {
	abstract static function get( $key );
	abstract static function set( $key, $val );
}

class AppRegistry extends Registry {
	private static $inst;
	private static $values;

	private function __construct() {}

	static function instance() {
		if ( ! isset( self::$inst ) ) { self::$inst = new self(); }
		return self::$inst;
	}

	static function get( $key ) {
		return self::instance()->values[$key];
	}

	static function set( $key, $val ) {
		self::instance()->values[$key] = $val;
	}
}

註冊表模式也不要濫用,在MVC項目中用來存儲中轉數據非常合適,比如在Command(邏輯運算層)中將運算結果存儲在註冊表中,在View層中取出用於頁面輸出,如果直接在Command(邏輯運算層)中include View層,那麼當然可以直接在View層內使用Command的運算結果,但是MVC一般由Controller(控制層)指定View層

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章