php53 php55区别,详解 PHP 中的三大经典模式
原文:https://www.cnblogs.com/heyue0117/p/11869676.html
單例模式
單例模式的含義:
作為對象的創(chuàng)建模式,單例模式確保某一個類只有一個實例,而且自行實例化并向整個系統(tǒng)全局地提供這個實例。它不會創(chuàng)建實例副本,而是會向單例類內(nèi)部存儲的實例返回一個引用。
單例模式的三個要素:
1. 保存類唯一實例的靜態(tài)變量。
2. 構造函數(shù)和克隆函數(shù)必須是私有的,放在外部去實例化,這樣就不存在單例模式的意義。
3. 提供一個可供外部訪問的公共靜態(tài)方法,這個方法返回該類的唯一實例。
單例模式的意義:
在 PHP 中的應用主要在于數(shù)據(jù)庫應用, 所以一個應用中會存在大量的數(shù)據(jù)庫操作, 在使用面向?qū)ο蟮姆绞介_發(fā)時, 如果使用單例模式, 則可以避免大量的 new 操作消耗的資源。而不完全是對系統(tǒng)資源的節(jié)省, 可以避免重復實例化,因為 PHP 每次實例化一個類之后都會清理掉對應的資源,當再次使用的時候又會在重新去實例化一次。
單例模式使用的場景:
1. 數(shù)據(jù)庫操作,減少對數(shù)據(jù)路的 new 操作,從而減少內(nèi)存資源和系統(tǒng)資源的消耗。
2. 配置資源的共享,在一個系統(tǒng)中,配置資源都是全局的,使用單例模式也可以減少每次去讀取配置帶來的內(nèi)存和系統(tǒng)資源的消耗。
代碼演示:
單例模式和非單例模式的區(qū)別:
工廠模式
工廠模式的有含義:
負責生成其他對象的方法。簡單的描述就是通過一個工廠類,去實例化其他類或者方法。
工廠模式的意義:
通過使用工廠模式,減少因為多處 new 同一個類,當這個類發(fā)生變法時,則需要多處修改。
代碼演示:
注冊樹模式
注冊數(shù)的含義:
注冊樹就是將多個對象注冊在一個對象池中,當我們需要使用時,直接從對象池獲取即可。
注冊數(shù)模式的優(yōu)點:
單例模式解決的是如何在整個項目中創(chuàng)建唯一對象實例的問題,工廠模式解決的是如何不通過 new 建立實例對象的方法。
那么注冊樹模式想解決什么問題呢? 在考慮這個問題前,我們還是有必要考慮下前兩種模式目前面臨的局限。
首先,單例模式創(chuàng)建唯一對象的過程本身還有一種判斷,即判斷對象是否存在。存在則返回對象,不存在則創(chuàng)建對象并返回。
每次創(chuàng)建實例對象都要存在這么一層判斷。
工廠模式更多考慮的是擴展維護的問題。
總的來說,單例模式和工廠模式可以產(chǎn)生更加合理的對象。怎么方便調(diào)用這些對象呢?
而且在項目內(nèi)如此建立的對象好像散兵游勇一樣,不便統(tǒng)籌管理安排啊。因 而,注冊樹模式應運而生。
不管你是通過單例模式還是工廠模式還是二者結合生成的對象,都統(tǒng)統(tǒng)給我 “插到” 注冊樹上。我用某個對象的時候,直接從注冊樹上取 一下就好。
這和我們使用全局變量一樣的方便實用。 而且注冊樹模式還為其他模式提供了一種非常好的想法。
代碼演示:
總結
以上是生活随笔為你收集整理的php53 php55区别,详解 PHP 中的三大经典模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 迅捷云路由器是什么?和普通路由器有什么区
- 下一篇: php ajax 更改状态,phpaja