Jquery中文网 www.jquerycn.cn
Jquery中文网 >  脚本编程  >  php  >  正文 工厂模式与内存分配之间有什么联系?

工厂模式与内存分配之间有什么联系?

发布时间:2021-01-13   编辑:www.jquerycn.cn
jquery中文网为您提供工厂模式与内存分配之间有什么联系?等资源,欢迎您收藏本站,我们将为您提供最新的工厂模式与内存分配之间有什么联系?资源
本篇文章给大家带来的内容是介绍工厂模式与内存分配,以及工厂模式与内存分配之间的联系。有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

一、什么是工厂模式

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

1.png

3、代码分析:

(1)代码中输出了两个对象,分部是$obj1和$obj2,输出了一次construct中的数字,两个对象编号一样 (2)由此可见,工厂模式可以做到一点,就是只new一次对象

二、对象在内存中是如何分配的呢?

1、内存从分配角度大体可以分为四种类型:栈空间段、堆空间段、代码段、初始化静态段。

2、栈空间段是存储占用相同空间长度并且占用空间较小的数据类型的地方,比如说整型1,10,100,1000,10000,100000 等等,在内存里面占用空间是等长的,都是64 位4 个字节。

3、堆空间段是存储数据长度不定且占用空间较大的数据类型,例如对象。

4、代码段是存储执行程序代码本身的地方。

5、数据段是存储初始化且不为0的全局变量,如静态变量和常量。

6、内存分配图示:

2.png

7、栈内存是可以直接存取的,而堆内存不可以直接存取。

8、对于我们的对象来说就是一种大的数据类型而且是占用空间不定长的类型,所以说对象本身是放在堆里面的,但对象名称是放在栈里面的,这样通过对象名称就可以使用对象了

9、对象的图示:

3.png

10、上图可以看到,对象名是存在栈中,new了三个person对象,三个具体的对象信息存在堆中。

三、工厂模式与内存分配之间的联系

1、总结起来可以知道,工厂模式就是尽可能的只创建一次对象,从而在堆空间中不用创建重复的对象导致空间浪费,因为堆空间本身是不定长的且空间较大。

2、工厂模式,提取关键词,就是“只new一次对象”、“节省堆空间”。

相关视频教程推荐:《PHP教程》

以上就是本篇文章的全部内容,希望能对大家的学习有所帮助。更多精彩内容大家可以关注jquery中文网相关教程栏目!!!

以上就是工厂模式与内存分配之间有什么联系?的详细内容,更多请关注jQuery中文网其它相关文章!

  • 本文转载于:segmentfault 思否,如有侵犯,请联系jquerycn@qq.com删除
  • 您可能感兴趣的文章:
    JavaScript设计模式一:工厂模式和构造器模式
    深入php设计模式实例详解
    java设计模式之抽象工厂模式实例
    java工厂模式的学习笔记
    详解 PHP 中的三大经典模式
    什么是php工厂模式
    C# 设计模式之Abstract Factory 抽象工厂(概念)
    《学不会的JAVA,消不了的忧愁》之五——献给那些酷爱计算机编程的人们
    Laravel 深入理解控制反转(IoC)和依赖注入(DI)
    什么是MAC地址-基础知识

    [关闭]