工廠+單例+注冊樹模式(php實現(xiàn))

什么是注冊樹模式榛鼎?

  注冊樹模式當然也叫注冊模式机打,注冊器模式。之所以我在這里矯情一下它的名稱沉迹,是因為我感覺注冊樹這個名稱更容易讓人理解浪谴。像前兩篇一樣开睡,我們這篇依舊是從名字入手祈搜。注冊樹模式通過將對象實例注冊到一棵全局的對象樹上,需要的時候從對象樹上采摘的模式設計方法士八。


這讓我想起了小時候買糖葫蘆容燕,賣糖葫蘆的將糖葫蘆插在一個大的桿子上,人們買的時候就取下來婚度。不同的是蘸秘,注冊樹模式摘下來還會有,能摘很多次蝗茁,糖葫蘆摘一次就沒了醋虏。。哮翘。

為什么要采用注冊樹模式颈嚼?

  單例模式解決的是如何在整個項目中創(chuàng)建唯一對象實例的問題,工廠模式解決的是如何不通過new建立實例對象的方法饭寺。

那么注冊樹模式想解決什么問題呢阻课? 在考慮這個問題前,我們還是有必要考慮下前兩種模式目前面臨的局限艰匙。

?首先限煞,單例模式創(chuàng)建唯一對象的過程本身還有一種判斷,即判斷對象是否存在员凝。存在則返回對象署驻,不存在則創(chuàng)建對象并返回。

每次創(chuàng)建實例對象都要存在這么一層判斷健霹。 工廠模式更多考慮的是擴展維護的問題旺上。

總的來說,單例模式和工廠模式可以產生更加合理的對象糖埋。怎么方便調用這些對象呢宣吱?而且在項目內如此建立的對象好像散兵游勇一樣,不便統(tǒng)籌管理安排啊阶捆。因而凌节,注冊樹模式應運而生钦听。不管你是通過單例模式還是工廠模式還是二者結合生成的對象洒试,都統(tǒng)統(tǒng)給我“插到”注冊樹上。

我用某個對象的時候朴上,直接從注冊樹上取一下就好垒棋。這和我們使用全局變量一樣的方便實用。

而且注冊樹模式還為其他模式提供了一種非常好的想法痪宰。

如何實現(xiàn)注冊樹叼架?

  通過上述的描述畔裕,我們似乎很容易就找到了解決方法。首先我們需要一個作為注冊樹的類乖订,這毋庸置疑扮饶。所有的對象“插入”到注冊樹上。這個注冊樹應該由一個靜態(tài)變量來充當乍构。而且這個注冊樹應該是一個二維數(shù)組甜无。這個類應該有一個插入對象實例的方法(set()),當讓相對應的就應該有一個撤銷對象實例的方法(_unset())哥遮。當然最重要的是還需要有一個讀取對象的方法(get())岂丘。擁有這些,我們就可以愉快地完成注冊樹模式啦~~~

  下面讓三種模式做個小小的結合眠饮。單純創(chuàng)建一個實例對象遠遠沒有這么復雜奥帘,但運用于大型項目的話,便利性便不言而喻了仪召。

<?php

//創(chuàng)建單例

class Single{

? ? public $hash;

? ? static protected $ins=null;

? ? final protected function __construct(){

? ? ? ? $this->hash=rand(1,9999);

? ? }

? ? static public function getInstance(){

? ? ? ? if (self::$ins instanceof self) {

? ? ? ? ? ? return self::$ins;

? ? ? ? }

? ? ? ? self::$ins=new self();

? ? ? ? return self::$ins;

? ? }

}

//工廠模式

class RandFactory{

? ? public static function factory(){

? ? ? ? return Single::getInstance();

? ? }

}

//注冊樹

class Register{

? ? protected static $objects;

? ? public static function set($alias,$object){

? ? ? ? self::$objects[$alias]=$object;

? ? }

? ? public static function get($alias){

? ? ? ? return self::$objects[$alias];

? ? }

? ? public static function _unset($alias){

? ? ? ? unset(self::$objects[$alias]);

? ? }

}

Register::set('rand',RandFactory::factory());

$object=Register::get('rand');

print_r($object);



?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末寨蹋,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子扔茅,更是在濱河造成了極大的恐慌钥庇,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件咖摹,死亡現(xiàn)場離奇詭異评姨,居然都是意外死亡,警方通過查閱死者的電腦和手機萤晴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進店門吐句,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人店读,你說我怎么就攤上這事嗦枢。” “怎么了屯断?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵文虏,是天一觀的道長。 經常有香客問我殖演,道長氧秘,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任趴久,我火速辦了婚禮丸相,結果婚禮上,老公的妹妹穿的比我還像新娘彼棍。我一直安慰自己灭忠,他們只是感情好膳算,可當我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著弛作,像睡著了一般涕蜂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上映琳,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天宇葱,我揣著相機與錄音,去河邊找鬼刊头。 笑死黍瞧,一個胖子當著我的面吹牛,可吹牛的內容都是我干的原杂。 我是一名探鬼主播印颤,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼穿肄!你這毒婦竟也來了年局?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤咸产,失蹤者是張志新(化名)和其女友劉穎矢否,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體脑溢,經...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡僵朗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了屑彻。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片验庙。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖社牲,靈堂內的尸體忽然破棺而出粪薛,到底是詐尸還是另有隱情,我是刑警寧澤搏恤,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布违寿,位于F島的核電站,受9級特大地震影響熟空,放射性物質發(fā)生泄漏藤巢。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一痛阻、第九天 我趴在偏房一處隱蔽的房頂上張望菌瘪。 院中可真熱鬧腮敌,春花似錦阱当、人聲如沸俏扩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽录淡。三九已至,卻和暖如春油坝,著一層夾襖步出監(jiān)牢的瞬間嫉戚,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工澈圈, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留彬檀,地道東北人。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓瞬女,卻偏偏與公主長得像窍帝,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子诽偷,可洞房花燭夜當晚...
    茶點故事閱讀 44,901評論 2 355

推薦閱讀更多精彩內容

  • 什么是注冊樹模式坤学? 注冊樹模式當然也叫注冊模式,注冊器模式报慕。之所以我在這里矯情一下它的名稱深浮,是因為我感覺注冊樹這個...
    flamez57閱讀 446評論 0 1
  • 更新:這篇文章已經不推薦閱讀,大家想了解 PHP 的設計模式眠冈,建議閱讀這篇文章: https://laravel-...
    冰淤閱讀 11,486評論 2 11
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,101評論 1 32
  • 有時候飞苇,我們看一段話會感動,聽一首歌會流淚蜗顽,是因為我們仿佛從那一段話中看了以前的自己玄柠,我們仿佛從那一首歌中聽到了屬...
    涼生余生請多指教閱讀 227評論 0 1
  • 親子日記第159篇 今天上午,媽媽送我去了練了的字诫舅,下午我又寫了讀書筆記羽利,今天真開心。
    張誠媽媽閱讀 143評論 0 0