资讯专栏INFORMATION COLUMN

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

zeyu / 2318人阅读

摘要:三工厂模式与内存分配之间的联系总结起来可以知道,工厂模式就是尽可能的只创建一次对象,从而在堆空间中不用创建重复的对象导致空间浪费,因为堆空间本身是不定长的且空间较大。工厂模式,提取关键词,就是只一次对象节省堆空间。

一、什么是工厂模式

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

_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的全局变量,如静态变量和常量。

内存分配图示:

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

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

对象的图示:

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

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

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

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/73810.html

相关文章

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

    摘要:三工厂模式与内存分配之间的联系总结起来可以知道,工厂模式就是尽可能的只创建一次对象,从而在堆空间中不用创建重复的对象导致空间浪费,因为堆空间本身是不定长的且空间较大。工厂模式,提取关键词,就是只一次对象节省堆空间。 一、什么是工厂模式 工厂模式就是负责生产其他对象的类或方法,常用的工厂模式的一个用法:

    Pink 评论0 收藏0
  • 第6章:可维护性软件构建方法 6.2可维护性设计模式

    摘要:抽象工厂模式将具有共同主题的对象工厂分组。对可重用性和可维护性设计模式的高层考虑创造性模式工厂方法模式也称为虚拟构造器意图定义一个用于创建对象的接口,但让子类决定实例化哪个类。 大纲 创造性模式 工厂方法模式创建对象而不指定要创建的确切类。 抽象工厂模式将具有共同主题的对象工厂分组。 Builder模式通过分离构造和表示来构造复杂的对象。 结构模式 Bridge将抽象从其实现中分...

    VioletJack 评论0 收藏0
  • Tensorflow 代码解析(三)

    摘要:所有操作都是节点形式表示的,包括计算节点和非计算节点。采用回合通信机制,类似生产者消费者的消息信箱。解析器将协议内存块解析为张量,放入队列中,其中命名和类型要与写入的一致。目前就职于腾讯事业部,从事神经机器翻译工作。 4.  TF – Kernels模块TF中包含大量Op算子,这些算子组成Graph的节点集合。这些算子对Tensor实现相应的运算操作。图 4 1列出了TF中的Op算子的分类和...

    worldligang 评论0 收藏0
  • java篇 - 收藏集 - 掘金

    摘要:进阶多线程开发关键技术后端掘金原创文章,转载请务必将下面这段话置于文章开头处保留超链接。关于中间件入门教程后端掘金前言中间件 Java 开发人员最常犯的 10 个错误 - 后端 - 掘金一 、把数组转成ArrayList 为了将数组转换为ArrayList,开发者经常... Java 9 中的 9 个新特性 - 后端 - 掘金Java 8 发布三年多之后,即将快到2017年7月下一个版...

    OpenDigg 评论0 收藏0
  • Java面试 32个核心必考点完全解析

    摘要:如问到是否使用某框架,实际是是问该框架的使用场景,有什么特点,和同类可框架对比一系列的问题。这两个方向的区分点在于工作方向的侧重点不同。 [TOC] 这是一份来自哔哩哔哩的Java面试Java面试 32个核心必考点完全解析(完) 课程预习 1.1 课程内容分为三个模块 基础模块: 技术岗位与面试 计算机基础 JVM原理 多线程 设计模式 数据结构与算法 应用模块: 常用工具集 ...

    JiaXinYi 评论0 收藏0

发表评论

0条评论

zeyu

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<