課程
/后端開(kāi)發(fā)
/PHP
/大話PHP設(shè)計(jì)模式
原型模式是clone 一個(gè)原型,那為什么不用單例模式呢? 這樣也很省資源啊~
2018-10-26
源自:大話PHP設(shè)計(jì)模式 10-1
正在回答
clone 不僅僅是克隆一個(gè)對(duì)象, 而是把對(duì)象的初始化屬性也克隆了, 而單例模式只是 防止重復(fù)實(shí)例化對(duì)象.
兩幅畫(huà),兩幅圖,如果用單例的話,這個(gè)數(shù)據(jù)$data應(yīng)該是靜態(tài)共享的,效果應(yīng)該就是先畫(huà)了圖1,然后======,畫(huà)圖2的時(shí)候,是以圖1中的$data數(shù)據(jù)為基礎(chǔ)來(lái)留空白的,這樣圖2的效果就成了,一塊畫(huà)布,兩個(gè)矩形重疊的樣子。
單例模式比較常見(jiàn)是到創(chuàng)建一個(gè)實(shí)例化對(duì)象,但是原型模式還帶有一系列的初始化操作。
單例模式是整個(gè)程序中某個(gè)類(lèi)只存在一個(gè)對(duì)象,所有對(duì)該對(duì)象的改動(dòng)都會(huì)被引用。很顯然,作用跟原型模式是不一樣的,雖然單例模式最省內(nèi)存。原型模式可以創(chuàng)建出來(lái)某個(gè)對(duì)象的N個(gè)實(shí)例,只是創(chuàng)建的方法用clone而不是new,省去了初始化過(guò)程的大量開(kāi)銷(xiāo)。所以,原型模式與單例模式的作用與場(chǎng)景都是不同的。
原型模型使用的場(chǎng)景是,創(chuàng)建新對(duì)象成本較大時(shí)可以利用已有的對(duì)象進(jìn)行復(fù)制來(lái)獲得,從而降低創(chuàng)建對(duì)象的代價(jià),原型模式隱藏了創(chuàng)建對(duì)象的復(fù)雜性。只需要知道要?jiǎng)?chuàng)建對(duì)象的類(lèi)型,然后通過(guò)請(qǐng)求就可以獲得和該對(duì)象一模一樣的新對(duì)象,無(wú)須知道具體的創(chuàng)建過(guò)程。使用的目的是創(chuàng)建新對(duì)象,而不是獲取同一個(gè)對(duì)象實(shí)例,而且可以進(jìn)行淺拷貝和深拷貝,單例模式創(chuàng)建的對(duì)象都是同一個(gè),該模式只創(chuàng)建了一個(gè)對(duì)象,而不能創(chuàng)建新的對(duì)象。
舉報(bào)
幫助PHPer具備使用設(shè)計(jì)模式解決工程中復(fù)雜邏輯的能力
1 回答原型模式,就是工廠模式和單例模式的綜合?
4 回答單例模式
1 回答單例模式和注冊(cè)樹(shù)模式有什么區(qū)別
1 回答單例模式在web中的作用
1 回答調(diào)用單例模式一個(gè)屬性而引發(fā)文件不存在報(bào)錯(cuò)!
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號(hào)-11 京公網(wǎng)安備11010802030151號(hào)
購(gòu)課補(bǔ)貼聯(lián)系客服咨詢(xún)優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號(hào)
2022-03-26
clone 不僅僅是克隆一個(gè)對(duì)象, 而是把對(duì)象的初始化屬性也克隆了, 而單例模式只是 防止重復(fù)實(shí)例化對(duì)象.
2019-06-20
兩幅畫(huà),兩幅圖,如果用單例的話,這個(gè)數(shù)據(jù)$data應(yīng)該是靜態(tài)共享的,效果應(yīng)該就是先畫(huà)了圖1,然后======,畫(huà)圖2的時(shí)候,是以圖1中的$data數(shù)據(jù)為基礎(chǔ)來(lái)留空白的,這樣圖2的效果就成了,一塊畫(huà)布,兩個(gè)矩形重疊的樣子。
2019-01-13
單例模式比較常見(jiàn)是到創(chuàng)建一個(gè)實(shí)例化對(duì)象,但是原型模式還帶有一系列的初始化操作。
2019-01-08
單例模式是整個(gè)程序中某個(gè)類(lèi)只存在一個(gè)對(duì)象,所有對(duì)該對(duì)象的改動(dòng)都會(huì)被引用。很顯然,作用跟原型模式是不一樣的,雖然單例模式最省內(nèi)存。原型模式可以創(chuàng)建出來(lái)某個(gè)對(duì)象的N個(gè)實(shí)例,只是創(chuàng)建的方法用clone而不是new,省去了初始化過(guò)程的大量開(kāi)銷(xiāo)。所以,原型模式與單例模式的作用與場(chǎng)景都是不同的。
2018-10-28
原型模型使用的場(chǎng)景是,創(chuàng)建新對(duì)象成本較大時(shí)可以利用已有的對(duì)象進(jìn)行復(fù)制來(lái)獲得,從而降低創(chuàng)建對(duì)象的代價(jià),原型模式隱藏了創(chuàng)建對(duì)象的復(fù)雜性。只需要知道要?jiǎng)?chuàng)建對(duì)象的類(lèi)型,然后通過(guò)請(qǐng)求就可以獲得和該對(duì)象一模一樣的新對(duì)象,無(wú)須知道具體的創(chuàng)建過(guò)程。使用的目的是創(chuàng)建新對(duì)象,而不是獲取同一個(gè)對(duì)象實(shí)例,而且可以進(jìn)行淺拷貝和深拷貝,單例模式創(chuàng)建的對(duì)象都是同一個(gè),該模式只創(chuàng)建了一個(gè)對(duì)象,而不能創(chuàng)建新的對(duì)象。