当前位置: 首页 > 后端技术 > PHP

工厂模式与内存分配的联系

时间:2023-03-29 20:21:29 PHP

1.什么是工厂模式?工厂模式是负责生产其他对象的类或方法。常用工厂模式的一个用法:_obj){$this->_obj=newTest();}返回$this->_obj;}}classTest{公共函数__construct(){echo121111;}}$industry=newExportIndustryObj();$obj1=$industry->getObj();$obj2=$industry->getObj();var_dump($obj1,$obj2);上面代码执行后:代码分析:(1)代码中输出两个对象,划分为$obj1和$obj2,construct中的数字输出一次,两个对象的数字相同(2).可以看出,工厂模式只能做一件事,就是只新建一次对象。对象在内存中是如何分配的?从分配的角度来看,内存大致可以分为四种:栈空间段、堆空间段、代码段、初始化静态段。栈空间段是存放空间长度相同和占用空间较小的数据类型的地方,如整数1、10、100、1000、10000、100000等,在内存中占用长度相同,都是64位4个字节。堆空间段是一种存储变长数据,占用空间较大的数据类型,如对象。代码段是存储执行程序代码本身的地方。数据段是存放初始化后不为0的全局变量,如静态变量、常量等。内存分配图:栈内存可以直接访问,堆内存不能直接访问。对于我们的对象来说,它是一个大数据类型,占用的空间长度是可变的,所以对象本身是放在堆中的,但是对象名是放在栈中的,这样就可以通过对象名来使用了对象图标:从上图可以看出,栈中存放了对象名,新建了三个person对象,堆中存放了三个具体的对象信息。3、工厂模式与内存分配的关系综上所述,可以知道工厂模式就是尽可能只创建一次对象,这样就不需要在堆空间创建重复的对象,从而导致空间浪费,因为堆空间本身是变长的,空间较大。工厂模式,提取关键字,是“只新建一次对象”,“节省堆空间”。