What is the connection between factory pattern and memory allocation?

青灯夜游
Release: 2023-04-05 18:12:01
forward
2089 people have browsed it

This article brings you an introduction to factory mode and memory allocation, as well as the connection between factory mode and memory allocation. It has certain reference value. Friends in need can refer to it. I hope it will be helpful to you.

1. What is the factory pattern

#1. The factory pattern is a class or method responsible for producing other objects. Commonly used factories A usage of the pattern:

<?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);
Copy after login

2. After the above code is executed:

What is the connection between factory pattern and memory allocation?

##3. Code analysis:

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

2. How are objects allocated in memory?

1. From the perspective of allocation, memory can be roughly divided into four types: stack space segment, heap space segment, code segment, and initialization static segment.

2,

Stack space segment is a place to store data types that occupy the same space length and occupy less space, such as integers 1, 10, 100, 1000, 10000, 100000, etc. Wait, the space occupied in the memory is the same length, both are 64 bits and 4 bytes.

3,

Heap space segment is a data type that stores data of variable length and takes up large space, such as objects.

4,

Code segment is where the executable program code itself is stored.

5,

Data segment is a global variable that stores initialization and is not 0, such as static variables and constants.

6. Memory allocation diagram:


What is the connection between factory pattern and memory allocation?

#7. Stack memory can be directly accessed, but heap memory cannot be directly accessed. .

8. For our object, it is a large data type and it takes up space of a variable length, so

the object itself is placed in the heap, but the object name It is placed in the stack, so that the object can be used through the object name

9. Illustration of the object:


What is the connection between factory pattern and memory allocation?

10. As you can see from the picture above, the object name is stored in the stack, three person objects are new, and three specific object information are stored in the heap.

3. The connection between factory mode and memory allocation

1. To sum up, we can know that the factory mode only creates as much as possible Once the object is created, there is no need to create duplicate objects in the heap space, resulting in a waste of space, because the heap space itself is of variable length and has a large space.

2. Factory mode, extract keywords, which are "only new objects once" and "save heap space".

Recommended video tutorials: "

PHP Tutorial"

The above is the entire content of this article, I hope it will be helpful to everyone's learning. For more exciting content, you can pay attention to the relevant tutorial columns of the PHP Chinese website! ! !

The above is the detailed content of What is the connection between factory pattern and memory allocation?. For more information, please follow other related articles on the PHP Chinese website!

source:segmentfault.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!