乐趣区

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

一、什么是工厂模式

工厂模式就是负责生产其他对象的类或方法,常用的工厂模式的一个用法:
<?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);

上述代码执行后:

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

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

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

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

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

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

数据段是存储初始化且不为 0 的全局变量,如静态变量和常量。
内存分配图示:

退出移动版