該文章屬于《編程中的那些經典套路——設計模式匯總》系列,并且以下內容基于語言PHP
在設計模式中,單例模式和工廠模式)可以說是使用的最普遍的設計模式了,所以掌握此種模式尤為重要。
單例模式一般使用在資源共享和需要控制資源的情況下。
例如:購物車,回收站,數據庫連接池,計數器,配置文件共享等所有項目中只需要存在一個的模塊,你都可以采用單例模式。
單例模式的好處就在于當前進程只產生一個對象(或者叫做模塊),
但有一點需要指出,如果單例模式的操作對象是一個資源類型,那么此時的單例模式并不是純粹的單例模式,因為php的生命周期僅僅是頁面級別的,所以他無法像Java語言那樣在內存中將這個資源類型存起來,并且我們也無法借助類似redis的nosql緩存數據庫,因為資源類型(類似mysql_connect的返回值)是無法被序列化(指的是資源無法轉成字符串)。
即,php的單例,僅指進程中單例,不似java,在整個內存中單例,所以在PHP語言下,單例模式是有瑕疵的。
上代碼:
單例模式.php
select_db("test")); print_r($db->select_db("test")); print_r($db->select_db("test")); //output:只有一次實例化111 ?>
通過輸出(output)可以看出頁面執行中,數據庫類(class Database)只有第一次調用的時候是真實實例化的,剩下的調用都是直接從靜態變量獲取該實例的,這樣的話就防止了在一次生命周期中多次連接數據庫了,極大的節省了資源,這就是單例模式。
該文章屬于《編程中的那些經典套路——設計模式匯總》系列
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/21673.html
摘要:我們應該寫一段拓展性強與維護性較強的代碼,由此衍生出觀察者模式。 該文章屬于《編程中的那些經典套路——設計模式匯總》系列,并且以下內容基于語言PHP 今天我們來談談觀察者模式,這是一個經常用到的設計模式。 讓我們想象一個場景:一個網站有不同等級區域的用戶,不同等級的的用戶登錄后可以獲得對應的服務(一級用戶登錄后獲得一級服務,二級用戶登錄后獲得二級服務,…以此類推)。那么我們如何寫這段業...
摘要:如果看不懂的話,可以在評論區中提問,我會第一時間回答你無論何時我一直都在嗯哼該文章屬于編程中的那些經典套路設計模式匯總系列 在正式閱讀前,我先談談我們該用什么姿勢和心態學習設計模式: 如果你還沒有過多的編程經驗(泛指半年以下),我建議你把它當做小說來看,能看懂多少是多少,因為半年以下經驗的程序員用到設計模式的情況只會出現在面試上,至于實際工作中?相對來說這部分不會由你負責。 如果你已...
摘要:該文章屬于編程中的那些經典套路設計模式匯總系列,并且以下內容基于語言前面我們寫了簡單工廠模式,編程中的那些套路關于簡單工廠模式,但簡單工廠模式有一些不足違反開放封閉原則,所以需要設計出一套更加規范的設計模式。 該文章屬于《編程中的那些經典套路——設計模式匯總》系列,并且以下內容基于語言PHP 前面我們寫了簡單工廠模式,《編程中的那些套路——關于簡單工廠模式》,但簡單工廠模式有一些不足(...
摘要:簡單工廠模式就是遵循了這一原則,它讓不同職責的類各司其職。重點來了,簡單工廠模式的不足但是簡單工廠模式有一個不足,雖然它遵循了單一職責原則,但它違反了另一條同樣很重要的原則開放封閉原則。 該文章屬于《編程中的那些經典套路——設計模式匯總》系列,并且以下內容基于語言PHP 面向對象五大原則中有一點非常重要的原則:單一職責原則。 簡單工廠模式就是遵循了這一原則,它讓不同職責的類各司其職。 ...
該文章屬于《編程中的那些經典套路——設計模式匯總》系列,并且以下內容基于語言PHP 今天來談談責任鏈模式,乍一聽責任鏈模式好像很高級的一樣,但是相信我,其實每位天朝的同學都十分熟悉這個模式,責任鏈模式,就好像中國的官場制度一樣,每一個級別的權利都區分的很細,舉個生活中的栗子: 村委不能越級去替鎮委辦事情,如果村委無法解決,只能向上求助鎮委 鎮委不能越級去替市委辦事情,如果鎮委無法解決,只能向上求...
閱讀 1829·2023-04-26 00:59
閱讀 3130·2021-11-15 18:10
閱讀 3072·2021-09-22 16:02
閱讀 766·2021-09-02 15:15
閱讀 3716·2019-08-30 15:56
閱讀 1917·2019-08-30 15:54
閱讀 2858·2019-08-29 16:31
閱讀 2035·2019-08-29 16:10