說說工廠和單例

以前在 dbconfig.phpPDO 連接數(shù)據(jù)庫操作溶锭,用 $db = new pdo() ,然后 model 層其他文件 include_once('dbconfig.php') 就可以使用 PDO 實(shí)例對象 $db 的各種方法和異常處理類了虱颗。

  • 其實(shí)呢晶伦,目前我完全理解的看而芥,這樣之前存在兩個(gè)大問題。第一耕姊,代碼停留在 php4 面向過程的水平桶唐,不是把操作寫到一個(gè)文件或者函數(shù)去調(diào)用就叫面向?qū)ο螅。茉兰。尤泽。∵@一點(diǎn)我現(xiàn)在特別感謝魏振華老師邦邦,一學(xué)期她教的幾乎都是純理念的C++面相過程安吁,回想起來講的非常好,特別有用燃辖。

  • 第二個(gè)問題就是鬼店,每次 include 都會(huì) new 一個(gè) PDO 對象,由于這種蹩腳的代碼沒加命名空間黔龟,即使每次實(shí)例化對象賦值給同樣的變量名也可以使用妇智。但重點(diǎn)在于滥玷,每次開辟空間對內(nèi)存 I/O 讀寫影響很大,于是就有了一次結(jié)婚巍棱,終生幸福的設(shè)計(jì)模式:

  • 這里稍微說工廠模式和單例模式惑畴,請盡量保證你理解面向?qū)ο笳Z言特性(這里的設(shè)計(jì)模式并不是針對php!:结恪如贷!)。

  • 剛才那個(gè)例子到踏,不同文件里每次你要操作數(shù)據(jù)庫杠袱,都要實(shí)例化一個(gè)對象,很惡心窝稿。就像每次開房都要省下幾百塊吃飯和打游戲的錢楣富,我們也可以想辦法去網(wǎng)吧去 KTV 玩玩嘛。一般我們是每次需要操作數(shù)據(jù)庫就連接伴榔,工廠模式就是每次先引入配置好的 dbconfig.php 纹蝴,不管你是啥后臺(tái)文件,反正 model 層你基本都要和數(shù)據(jù)庫搞關(guān)系踪少,我全部都引進(jìn)來再說塘安。

  • 這樣可以少寫一點(diǎn)代碼,暑假有人告訴我這就是封裝代碼到一個(gè)文件秉馏。我信了耙旦,確實(shí)這是封裝脱羡,鏡像自制還能叫封裝呢B芫俊!锉罐!這個(gè)封裝和面向?qū)ο蟮姆庋b性其實(shí)并不是一個(gè)概念帆竹!起碼 dbconfig.php 這破文件誰都能訪問就不符合。然后為了防止 I/O 開銷脓规,我們引入了單例模式栽连,這又是啥意思?

  • 舉個(gè)例子吧侨舆,作為單身汪的你每周都要發(fā)泄一下秒紧,有時(shí)候去某店發(fā)泄,有時(shí)候你去網(wǎng)吧發(fā)泄挨下,有時(shí)候去 KTV 發(fā)泄熔恢,都要錢都很貴啊臭笆!然后你就學(xué)會(huì)了一卡通叙淌,學(xué)校所有地方都允許你發(fā)泄秤掌,學(xué)校借給你一些東西的使用權(quán),你還得還回去鹰霍,并且你每次都要走同一條路去發(fā)泄了闻鉴,這就是單例模式:創(chuàng)建一個(gè)唯一單例入口,有請求過來就判斷單例對象是否存在茂洒,存在就返回孟岛,不存在則創(chuàng)建。創(chuàng)建是個(gè)實(shí)例化的過程督勺,內(nèi)存開銷比較大蚀苛,但是如果一次創(chuàng)建后讓這個(gè)對象停留在靜態(tài)存儲(chǔ)區(qū) static 的話,后續(xù)就可以直接獲取玷氏。

在代碼上理解會(huì)更方便些: configdb.php 文件里堵未,BD class 里面有構(gòu)造函數(shù),保護(hù)屬性 $db 盏触,還有個(gè)私有方法 connectDB() 渗蟹,里面實(shí)現(xiàn)了 new PDO 操作,return $db,但是在類外是不能直接調(diào)用私有方法滴赞辩,怎么破呢雌芽?魏老師的學(xué)生絕對能回答出來,這個(gè)做法就是單例模式辨嗽,能看到這里的世落,請回答一下:(答案就是兩個(gè)單詞,共六個(gè)字母)糟需。

  • get and set屉佳。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市洲押,隨后出現(xiàn)的幾起案子武花,更是在濱河造成了極大的恐慌,老刑警劉巖杈帐,帶你破解...
    沈念sama閱讀 222,627評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件体箕,死亡現(xiàn)場離奇詭異,居然都是意外死亡挑童,警方通過查閱死者的電腦和手機(jī)累铅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來站叼,“玉大人娃兽,你說我怎么就攤上這事〈竽辏” “怎么了换薄?”我有些...
    開封第一講書人閱讀 169,346評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵玉雾,是天一觀的道長。 經(jīng)常有香客問我轻要,道長复旬,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,097評(píng)論 1 300
  • 正文 為了忘掉前任冲泥,我火速辦了婚禮驹碍,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘凡恍。我一直安慰自己志秃,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,100評(píng)論 6 398
  • 文/花漫 我一把揭開白布嚼酝。 她就那樣靜靜地躺著浮还,像睡著了一般。 火紅的嫁衣襯著肌膚如雪闽巩。 梳的紋絲不亂的頭發(fā)上钧舌,一...
    開封第一講書人閱讀 52,696評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音涎跨,去河邊找鬼洼冻。 笑死,一個(gè)胖子當(dāng)著我的面吹牛隅很,可吹牛的內(nèi)容都是我干的撞牢。 我是一名探鬼主播,決...
    沈念sama閱讀 41,165評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼叔营,長吁一口氣:“原來是場噩夢啊……” “哼屋彪!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起审编,我...
    開封第一講書人閱讀 40,108評(píng)論 0 277
  • 序言:老撾萬榮一對情侶失蹤撼班,失蹤者是張志新(化名)和其女友劉穎歧匈,沒想到半個(gè)月后垒酬,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,646評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡件炉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,709評(píng)論 3 342
  • 正文 我和宋清朗相戀三年勘究,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片斟冕。...
    茶點(diǎn)故事閱讀 40,861評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡口糕,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出磕蛇,到底是詐尸還是另有隱情景描,我是刑警寧澤十办,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站超棺,受9級(jí)特大地震影響向族,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜棠绘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,196評(píng)論 3 336
  • 文/蒙蒙 一件相、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧氧苍,春花似錦夜矗、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至赡突,卻和暖如春逛揩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背麸俘。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評(píng)論 1 274
  • 我被黑心中介騙來泰國打工辩稽, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人从媚。 一個(gè)月前我還...
    沈念sama閱讀 49,287評(píng)論 3 379
  • 正文 我出身青樓逞泄,卻偏偏與公主長得像,于是被迫代替她去往敵國和親拜效。 傳聞我的和親對象是個(gè)殘疾皇子喷众,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,860評(píng)論 2 361

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

  • Php:腳本語言,網(wǎng)站建設(shè)紧憾,服務(wù)器端運(yùn)行 PHP定義:一種服務(wù)器端的HTML腳本/編程語言,是一種簡單的到千、面向?qū)ο?..
    廖馬兒閱讀 2,148評(píng)論 2 38
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,324評(píng)論 25 707
  • PHP 學(xué)習(xí)目錄 ├─PHP視頻教程 1 LAMP網(wǎng)站構(gòu)建 │ ├─PHP教程 1.1.1 新版視頻形式介紹│ ...
    曹淵說創(chuàng)業(yè)閱讀 16,162評(píng)論 29 417
  • 前言 參考書:Android 開發(fā)藝術(shù)探索 本篇主要介紹 Activity 的生命周期、啟動(dòng)模式和 Intentf...
    珞神閱讀 287評(píng)論 0 0
  • 轉(zhuǎn)眼赴穗,炎熱的夏季即將過去... 在經(jīng)歷的前段時(shí)間的酷熱“折磨”之后... 我們張開雙臂迎來了又一個(gè)如詩如夢幻般燦爛...
    徐坤果兒閱讀 195評(píng)論 0 0