PHP工厂模式的好处

编程入门 行业动态 更新时间:2024-10-27 22:23:48

PHP工厂模式的<a href=https://www.elefans.com/category/jswz/34/1758285.html style=好处"/>

PHP工厂模式的好处

 顾名思义,工厂是可以加工零件的,PHP程序中的工厂模式也有相同的功能,可以方便的使用一个静态的工厂方法来实例化某一个类,那么这样做的好处是什么呢?初学PHP的设计模式,以下是我个人的理解

 

一般我们实例化一个类会给它一些参数以便在其构析的时候可以根据不同的参数反馈出我们需要的结果。
举例说明,以下是一个User类,非常简单:

01. <?php 02.        03.     interface IUser 04.     { 05.         function getName(); 06.         function getAge(); 07.     } 08.        09.     class User implements IUser 10.     { 11.         protected $_name; 12.         protected $_age; 13.            14.         function __construct($name$age) 15.         { 16.             $this->_name = $name; 17.             $this->_age = (int)$age; 18.         } 19.            20.         function getName() 21.         { 22.             return $this->_name; 23.         } 24.            25.         function getAge() 26.         { 27.             return $this->_age; 28.         } 29.     } 30.        31. ?>

我们如果要实例化这个类就要这样:

1. $u new User('小明',19);

一般如果这个类很少使用,那么这样做没什么太大影响,也非常好。
突然我想给这个类增加一个归类,把小明放入学生组,修改下类代码实现非常容易,但如果这个类在我们想修改之前在很多文件地方多次的实例化了,那么想为其增加一个参数就会变的非常烦琐,因为需要替换成:

1. $u new User('小明',19,'学生');

当然我们也可以通过在__construct函数中进行默认值设置来避免这种重复劳动,但事实上从代码优雅角度来说这样很不好,设想我们有一个工厂方法可以通过一个标识来对应一组参数,并把这个参数存放在某个文本文档或是直接以数组的形式存放在工厂类中,我们在调用User类的时候就会变的轻松许多,即便是需要增减参数属性也不需要到处进行代码的替换,下面就是一个工厂类(也可以直接将方法存放在User类)

01.     interface IUser 02.     { 03.         function getName(); 04.         function getAge(); 05.     } 06.        07.     class User implements IUser 08.     { 09.         protected $_group; 10.         protected $_name; 11.         protected $_age; 12.            13.         function __construct($name$age$group) 14.         { 15.             $this->_group = $group; 16.             $this->_name = $name; 17.             $this->_age = (int)$age; 18.         } 19.            20.         function getName() 21.         { 22.             return $this->_name; 23.         } 24.            25.         function getAge() 26.         { 27.             return $this->_age; 28.         } 29.     } 30.        31.     class Fuser 32.     { 33.         private static $group array( 34.             array('小明',19,'学生'), 35.             array('小王',19,'学生') 36.         ); 37.            38.         static function create($id) 39.         { 40.             list($name$age$group) = self::$group[(int)$id]; 41.             return new User($name$age$group); 42.         } 43.     } 44.        45.     echo Fuser::create(0)->getName();

得到的结果应该是输出“小明”。

 

 

更多推荐

PHP工厂模式的好处

本文发布于:2023-06-16 01:30:04,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/737084.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:好处   工厂   模式   PHP

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!