Laravel中的設(shè)計(jì)模式(一)——單例模式

image

1综液、為什么要使用單例模式

有一些對象其實(shí)我們只需要一個(gè)。比如線程池(threadpool)谬莹、緩存(cache)桩了、對話框、處理偏好設(shè)置和注冊表(register)對象等圣猎。

比如說我們在系統(tǒng)運(yùn)行時(shí)候乞而,就需要加載一些配置和屬性,這些配置和屬性是一定存在了欠啤,又是公共的,同時(shí)需要在整個(gè)生命周期中都存在洁段,所以只需要一份就行共郭,這個(gè)時(shí)候如果需要我再需要的時(shí)候new一個(gè),顯然是浪費(fèi)內(nèi)存并且再賦值沒什么意義除嘹,所以這個(gè)時(shí)候我們就需要單例模式。

2叠蝇、怎么實(shí)現(xiàn)單例模式

  • 構(gòu)造函數(shù)私有年缎,不允許外部類實(shí)例化它
  • 類自己創(chuàng)建唯一的實(shí)例,并保存到全局屬性當(dāng)中
  • 提供公共的靜態(tài)方法獲取這個(gè)唯一的實(shí)例
  • 不允許克隆

3单芜、PHP實(shí)現(xiàn)一下

<?php

class Singleton {
    private static $instance = null;

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

    private function __construct()
    {

    }

    private function __clone()
    {

    }
}

$demo = Singleton::getInstance();
$demo2 = Singleton::getInstance();
echo $demo===$demo2 ? 1 : 2;
echo "\n";

以上代碼執(zhí)行結(jié)果

1

4、在Laravel中的應(yīng)用

在laravel bootstrap/app.php文件中堂淡,可以看到幾行類似如下的代碼。這就是在laravel的容器中注冊了幾個(gè)核心類的單例淤齐。當(dāng)然你也可以自己在 app/Providers 中寫一個(gè)單例的服務(wù)。

$app->singleton(
    Illuminate\Contracts\Http\Kernel::class,
    App\Http\Kernel::class
);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末稚疹,一起剝皮案震驚了整個(gè)濱河市祭务,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌义锥,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,599評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件赂鲤,死亡現(xiàn)場離奇詭異柱恤,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)梗顺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,629評論 3 385
  • 文/潘曉璐 我一進(jìn)店門寺谤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來仑鸥,“玉大人变屁,你說我怎么就攤上這事”昧眨” “怎么了誊役?”我有些...
    開封第一講書人閱讀 158,084評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蛔垢。 經(jīng)常有香客問我,道長鹏漆,這世上最難降的妖魔是什么创泄? 我笑而不...
    開封第一講書人閱讀 56,708評論 1 284
  • 正文 為了忘掉前任鞠抑,我火速辦了婚禮,結(jié)果婚禮上搁拙,老公的妹妹穿的比我還像新娘法绵。我一直安慰自己,他們只是感情好朋譬,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,813評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著字柠,像睡著了一般犀忱。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上阴汇,一...
    開封第一講書人閱讀 50,021評論 1 291
  • 那天节槐,我揣著相機(jī)與錄音,去河邊找鬼哥倔。 笑死揍庄,一個(gè)胖子當(dāng)著我的面吹牛咆蒿,可吹牛的內(nèi)容都是我干的蚂子。 我是一名探鬼主播,決...
    沈念sama閱讀 39,120評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼蒂破,長吁一口氣:“原來是場噩夢啊……” “哼别渔!你這毒婦竟也來了惧互?” 一聲冷哼從身側(cè)響起喇伯,我...
    開封第一講書人閱讀 37,866評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎稻据,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體箩朴,經(jīng)...
    沈念sama閱讀 44,308評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡秋度,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,633評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了埠居。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片事期。...
    茶點(diǎn)故事閱讀 38,768評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖兽泣,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情称鳞,我是刑警寧澤,帶...
    沈念sama閱讀 34,461評論 4 333
  • 正文 年R本政府宣布冈止,位于F島的核電站候齿,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏慌盯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,094評論 3 317
  • 文/蒙蒙 一诗眨、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧匠楚,春花似錦、人聲如沸芋簿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,850評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽撩穿。三九已至磷支,卻和暖如春食寡,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背抵皱。 一陣腳步聲響...
    開封第一講書人閱讀 32,082評論 1 267
  • 我被黑心中介騙來泰國打工呻畸, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留移盆,地道東北人伤为。 一個(gè)月前我還...
    沈念sama閱讀 46,571評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像钮呀,于是被迫代替她去往敵國和親剑鞍。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,666評論 2 350

推薦閱讀更多精彩內(nèi)容

  • 單例模式(SingletonPattern)一般被認(rèn)為是最簡單爽醋、最易理解的設(shè)計(jì)模式,也因?yàn)樗暮啙嵰锥慵梗琼?xiàng)目中最...
    成熱了閱讀 4,231評論 4 34
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理蚂四,服務(wù)發(fā)現(xiàn),斷路器哪痰,智...
    卡卡羅2017閱讀 134,637評論 18 139
  • 1 場景問題# 1.1 讀取配置文件的內(nèi)容## 考慮這樣一個(gè)應(yīng)用遂赠,讀取配置文件的內(nèi)容。 很多應(yīng)用項(xiàng)目晌杰,都有與應(yīng)用相...
    七寸知架構(gòu)閱讀 6,683評論 12 68
  • 早加餐:面包晚水果:豐水梨 參考目標(biāo): 1份肉2份豆制品3份“新鮮”水果4份谷物/薯5份蔬菜跷睦,深綠色葉菜最好6杯水...
    靜趣_兒童心理師閱讀 216評論 0 0
  • 在微信上看到了關(guān)于這本書的介紹,于是在看豆上下載下來肋演,下午在車上順便看了一下抑诸。書里的內(nèi)容對我的啟迪很多烂琴,比...
    秋水長天碧閱讀 152評論 0 0