温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

工厂模式与内存分配之间关系

发布时间:2020-10-29 11:26:14 来源:亿速云 阅读:275 作者:小新 栏目:编程语言

这篇文章主要介绍了工厂模式与内存分配之间关系,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。

一、什么是工厂模式

1、工厂模式就是负责生产其他对象的类或方法,常用的工厂模式的一个用法:

<?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、上述代码执行后:

工厂模式与内存分配之间关系

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一次对象”、“节省堆空间”。

感谢你能够认真阅读完这篇文章,希望小编分享工厂模式与内存分配之间关系内容对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,遇到问题就找亿速云,详细的解决方法等着你来学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI