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