工厂模式与内存分配之间有什么联系?
内容导读
收集整理的这篇技术教程文章主要介绍了工厂模式与内存分配之间有什么联系?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1939字,纯文字阅读大概需要3分钟。
内容图文
本篇文章给大家带来的内容是介绍工厂模式与内存分配,以及工厂模式与内存分配之间的联系。有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。一、什么是工厂模式
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一次对象”、“节省堆空间”。
相关视频教程推荐:《PHP教程》
以上就是本篇文章的全部内容,希望能对大家的学习有所帮助。更多精彩内容大家可以关注Gxl网相关教程栏目!!!
以上就是工厂模式与内存分配之间有什么联系?的详细内容,更多请关注Gxl网其它相关文章!
内容总结
以上是为您收集整理的工厂模式与内存分配之间有什么联系?全部内容,希望文章能够帮你解决工厂模式与内存分配之间有什么联系?所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。