Home >Backend Development >PHP Tutorial >Benefits of PHP Factory Pattern_PHP Tutorial

Benefits of PHP Factory Pattern_PHP Tutorial

WBOY
WBOYOriginal
2016-07-13 10:37:47831browse

As the name suggests, the factory can process parts. The factory mode in the PHP program also has the same function. You can conveniently use a static factory method to instantiate a certain class. So what are the benefits of doing this? I am new to PHP design patterns, the following is my personal understanding

Generally, when we instantiate a class, we will give it some parameters so that when it is constructed, we can feedback the results we need based on different parameters.
For example, the following is a User class, very simple:


interface IUser{
function getName();
function getAge();
}

class User implementations IUser{
protected $_name;
protected $_age;

function __construct($name, $age){
$this->_name = $name;
$this->_age = (int)$age;
}

function getName(){
Return $this->_name;
}

function getAge(){
Return $this->_age;
}
}

?>

If we want to instantiate this class, it will be like this:
1.$u = new User(‘小明‘,19);
Generally, if this class is rarely used, then doing so does not have much impact and is very good.
Suddenly I want to add a classification to this class and put Xiao Ming into the student group. It is very easy to modify the code of the following class. However, if this class has been instantiated many times in many files before we want to modify it, then we want to add it to the student group. Adding a parameter will become very cumbersome because it needs to be replaced with:
1.$u = new User(‘Xiao Ming‘,19,‘Student‘);
Of course, we can also avoid this duplication of work by setting default values ​​in the __construct function, but in fact this is not good from the perspective of code elegance. Imagine that we have a factory method that can correspond to a set of parameters through an identifier. , and store this parameter in a text document or directly in the factory class in the form of an array, it will become much easier when we call the User class. Even if we need to increase or decrease parameter attributes, we do not need to do it everywhere. To replace the code, the following is a factory class (the method can also be stored directly in the User class)

interface IUser{
function getName();
function getAge();
}

class User implementations IUser{
protected $_group;
protected $_name;
protected $_age;

function __construct($name, $age, $group){
$this->_group = $group;
$this->_name = $name;
$this->_age = (int)$age;
}

function getName(){
Return $this->_name;
}

function getAge(){
Return $this->_age;
}
}

class Fuser{
private static $group = array(
      array(‘Xiao Ming‘,19,‘Student‘),
array(‘小王‘,19,‘student‘)
);

static function create($id){
List($name, $age, $group) = self::$group[(int)$id];
Return new User($name, $age, $group);
}
}

echo Fuser::create(0)->getName();

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/735168.htmlTechArticleAs the name suggests, the factory can process parts. The factory mode in the PHP program also has the same function and can be used conveniently. A static factory method to instantiate a certain class, then this...
Statement:
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