這篇文章主要介紹了工廠模式與內(nèi)存分配之間關系,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。
創(chuàng)新互聯(lián)主營龍口網(wǎng)站建設的網(wǎng)絡公司,主營網(wǎng)站建設方案,APP應用開發(fā),龍口h5微信小程序開發(fā)搭建,龍口網(wǎng)站營銷推廣歡迎龍口等地區(qū)企業(yè)咨詢
1、工廠模式就是負責生產(chǎn)其他對象的類或方法,常用的工廠模式的一個用法:
_obj){ $this->_obj = new Test(); } return $this->_obj; } } class Test{ public function __construct(){ echo 121111; } } $industry = new ExportIndustryObj(); $obj1 = $industry->getObj(); $obj2 = $industry->getObj(); var_dump($obj1,$obj2);
2、上述代碼執(zhí)行后:
3、代碼分析:
(1)代碼中輸出了兩個對象,分部是$obj1和$obj2,輸出了一次construct中的數(shù)字,兩個對象編號一樣 (2)由此可見,工廠模式可以做到一點,就是只new一次對象
1、內(nèi)存從分配角度大體可以分為四種類型:??臻g段、堆空間段、代碼段、初始化靜態(tài)段。
2、??臻g段是存儲占用相同空間長度并且占用空間較小的數(shù)據(jù)類型的地方,比如說整型1,10,100,1000,10000,100000 等等,在內(nèi)存里面占用空間是等長的,都是64 位4 個字節(jié)。
3、堆空間段是存儲數(shù)據(jù)長度不定且占用空間較大的數(shù)據(jù)類型,例如對象。
4、代碼段是存儲執(zhí)行程序代碼本身的地方。
5、數(shù)據(jù)段是存儲初始化且不為0的全局變量,如靜態(tài)變量和常量。
6、內(nèi)存分配圖示:
7、棧內(nèi)存是可以直接存取的,而堆內(nèi)存不可以直接存取。
8、對于我們的對象來說就是一種大的數(shù)據(jù)類型而且是占用空間不定長的類型,所以說對象本身是放在堆里面的,但對象名稱是放在棧里面的,這樣通過對象名稱就可以使用對象了
9、對象的圖示:
10、上圖可以看到,對象名是存在棧中,new了三個person對象,三個具體的對象信息存在堆中。
1、總結(jié)起來可以知道,工廠模式就是盡可能的只創(chuàng)建一次對象,從而在堆空間中不用創(chuàng)建重復的對象導致空間浪費,因為堆空間本身是不定長的且空間較大。
2、工廠模式,提取關鍵詞,就是“只new一次對象”、“節(jié)省堆空間”。
感謝你能夠認真閱讀完這篇文章,希望小編分享工廠模式與內(nèi)存分配之間關系內(nèi)容對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,遇到問題就找創(chuàng)新互聯(lián),詳細的解決方法等著你來學習!