溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

工廠模式與內(nèi)存分配之間關(guān)系

發(fā)布時(shí)間:2020-10-29 11:26:14 來源:億速云 閱讀:278 作者:小新 欄目:編程語言

這篇文章主要介紹了工廠模式與內(nèi)存分配之間關(guān)系,具有一定借鑒價(jià)值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

一、什么是工廠模式

1、工廠模式就是負(fù)責(zé)生產(chǎn)其他對(duì)象的類或方法,常用的工廠模式的一個(gè)用法:

<?php
   class ExportIndustryObj{
       public $_obj;

       public function getObj(){
           if(!$this->_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í)行后:

工廠模式與內(nèi)存分配之間關(guān)系

3、代碼分析:

(1)代碼中輸出了兩個(gè)對(duì)象,分部是$obj1和$obj2,輸出了一次construct中的數(shù)字,兩個(gè)對(duì)象編號(hào)一樣
(2)由此可見,工廠模式可以做到一點(diǎn),就是只new一次對(duì)象

二、對(duì)象在內(nèi)存中是如何分配的呢?

1、內(nèi)存從分配角度大體可以分為四種類型:??臻g段、堆空間段、代碼段、初始化靜態(tài)段。

2、棧空間段是存儲(chǔ)占用相同空間長度并且占用空間較小的數(shù)據(jù)類型的地方,比如說整型1,10,100,1000,10000,100000 等等,在內(nèi)存里面占用空間是等長的,都是64 位4 個(gè)字節(jié)。

3、堆空間段是存儲(chǔ)數(shù)據(jù)長度不定且占用空間較大的數(shù)據(jù)類型,例如對(duì)象。

4、代碼段是存儲(chǔ)執(zhí)行程序代碼本身的地方。

5、數(shù)據(jù)段是存儲(chǔ)初始化且不為0的全局變量,如靜態(tài)變量和常量。

6、內(nèi)存分配圖示:

工廠模式與內(nèi)存分配之間關(guān)系

7、棧內(nèi)存是可以直接存取的,而堆內(nèi)存不可以直接存取。

8、對(duì)于我們的對(duì)象來說就是一種大的數(shù)據(jù)類型而且是占用空間不定長的類型,所以說對(duì)象本身是放在堆里面的,但對(duì)象名稱是放在棧里面的,這樣通過對(duì)象名稱就可以使用對(duì)象了

9、對(duì)象的圖示:

工廠模式與內(nèi)存分配之間關(guān)系

10、上圖可以看到,對(duì)象名是存在棧中,new了三個(gè)person對(duì)象,三個(gè)具體的對(duì)象信息存在堆中。

三、工廠模式與內(nèi)存分配之間的聯(lián)系

1、總結(jié)起來可以知道,工廠模式就是盡可能的只創(chuàng)建一次對(duì)象,從而在堆空間中不用創(chuàng)建重復(fù)的對(duì)象導(dǎo)致空間浪費(fèi),因?yàn)槎芽臻g本身是不定長的且空間較大。

2、工廠模式,提取關(guān)鍵詞,就是“只new一次對(duì)象”、“節(jié)省堆空間”。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享工廠模式與內(nèi)存分配之間關(guān)系內(nèi)容對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,遇到問題就找億速云,詳細(xì)的解決方法等著你來學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI