一、什么是工廠模式
1、工廠模式就是負責生產其他對象的類或方法,常用的工廠模式的一個用法:
?php html' target='_blank'>class ExportIndustryObj{ public $_obj; public function getObj(){ if(!$this- _obj){ $this- _obj = new Test(); return $this- _obj; class Test{ public function __construct(){ echo 121111; $obj2 = $industry- getObj(); var_dump($obj1,$obj2);
2、上述代碼執行后:
3、代碼分析:
(1)代碼中輸出了兩個對象,分部是$obj1和$obj2,輸出了一次construct中的數字,兩個對象編號一樣(2)由此可見,工廠模式可以做到一點,就是只new一次對象二、對象在內存中是如何分配的呢?
1、內存從分配角度大體可以分為四種類型:棧空間段、堆空間段、代碼段、初始化靜態段。
2、棧空間段是存儲占用相同空間長度并且占用空間較小的數據類型的地方,比如說整型1,10,100,1000,10000,100000 等等,在內存里面占用空間是等長的,都是64 位4 個字節。
3、堆空間段是存儲數據長度不定且占用空間較大的數據類型,例如對象。
4、代碼段是存儲執行程序代碼本身的地方。
5、數據段是存儲初始化且不為0的全局變量,如靜態變量和常量。
6、內存分配圖示:
7、棧內存是可以直接存取的,而堆內存不可以直接存取。
8、對于我們的對象來說就是一種大的數據類型而且是占用空間不定長的類型,所以說對象本身是放在堆里面的,但對象名稱是放在棧里面的,這樣通過對象名稱就可以使用對象了
9、對象的圖示:
10、上圖可以看到,對象名是存在棧中,new了三個person對象,三個具體的對象信息存在堆中。
三、工廠模式與內存分配之間的聯系1、總結起來可以知道,工廠模式就是盡可能的只創建一次對象,從而在堆空間中不用創建重復的對象導致空間浪費,因為堆空間本身是不定長的且空間較大。
2、工廠模式,提取關鍵詞,就是“只new一次對象”、“節省堆空間”。
相關視頻教程推薦:《PHP教程》
以上就是本篇文章的全部內容,希望能對大家的學習有所幫助。更多精彩內容大家可以關注php 相關教程欄目?。。?/p>
以上就是工廠模式與內存分配之間有什么聯系?的詳細內容,PHP教程
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答