通過將物件例項註冊到一顆全域性的物件樹上
需要的時候從物件樹上採摘下來使用
單例模式解決的是如何在整個專案中建立唯一物件例項的問題,工廠模式解決的是如何不通過new建立例項物件的方法。 那麼註冊樹模式想解決什麼問題呢? 在考慮這個問題前,我們還是有必要考慮下前兩種模式目前面臨的侷限。 首先,單例模式建立唯一物件的過程本身還有一種判斷,即判斷物件是否存在。存在則返回物件,不存在則建立物件並返回。 每次建立例項物件都要存在這麼一層判斷。 工廠模式更多考慮的是擴充套件維護的問題。總的來說,單例模式和工廠模式可以產生更加合理的物件。怎麼方便呼叫這些物件呢?而且在專案內如此建立的物件好像散兵游勇一樣,不便統籌管理安排啊。因而,註冊樹模式應運而生。不管你是通過單例模式還是工廠模式還是二者結合生成的物件,都統統給我「插到」註冊樹上。我用某個物件的時候,直接從註冊樹上取一下就好。這和我們使用全域性變數一樣的方便實用。 而且註冊樹模式還為其他模式提供了一種非常好的想法。
通過上述的描述,我們似乎很容易就找到了解決方法。首先我們需要乙個作為註冊樹的類,這毋庸置疑。所有的物件「插入」到註冊樹上。這個註冊樹應該由乙個靜態變數來充當。而且這個註冊樹應該是乙個二維陣列。這個類應該有乙個插入物件例項的方法(set()),當讓相對應的就應該有乙個撤銷物件例項的方法(_unset())。當然最重要的是還需要有乙個讀取物件的方法(get())。擁有這些,我們就可以愉快地完成註冊樹模式啦~~~
class.php
<?php
//註冊樹
class
register
public
static
function
get(
$alias
)public
static
function
_unset
($alias
)}
index.php
<?php
include
'class.php'
;function
show()
function
age(
)show()
;age()
;echo register:
:get
('text1');
echo register:
:get
('text2'
);
註冊樹模式
註冊樹模式也叫註冊模式或註冊器模式 核心思想是將多個物件註冊到乙個全域性或指定物件中,在 中可以隨時隨地呼叫註冊到全域性物件中的物件,最終目的是實現全域性共享和交換物件的功能 namespace common class test namespace common class register re...
PHP 註冊樹模式
概念 將已經建立好的物件註冊到某個容器裡,在需要使用的時候直接從容器獲取即可。優勢 解決全域性共享和交換物件,將物件註冊到全域性的樹上任何地方直接去訪問。具體註冊樹和被註冊類 示例 註冊樹 class register public static function get alias public ...
php設計模式 註冊樹模式
註冊樹模式通過將物件例項註冊到全域性物件樹上,需要的時候將物件從全域性物件樹上取下來 前面講到的單例模式解決了在整個專案中建立唯一物件的問題,工廠模式解決了不通過new解決例項物件的問題,考慮的是專案擴充套件與維護。總得來說單例模式和工廠模式可以產生更加合理的物件,那麼怎麼方便統籌呼叫這些物件呢,這...