顾名思义,工厂是可以加工零件的,php程序中的工厂模式也有相同的功能,可以方便的使用一个静态的工厂方法来实例化某一个类,那么这样做的好处是什么呢?初学php的设计模式,以下是我个人的理解
一般我们实例化一个类会给它一些参数以便在其构析的时候可以根据不同的参数反馈出我们需要的结果。
举例说明,以下是一个ur类,非常简单:
复制代码 代码如下:
<?php
interface iur{
function getname();
function getage();
}
class ur implements iur{
protected $_name;
protected $_age;
function __construct($name, $age){
$this->_name = $name;
$this->_age = (int)$age;
}
f乐理知识unction getname(){
return $this->_name;
}
function getage(){
return $this->_age;
}
}
?>
我们如果要实例化这个类就要这样:
$u = new ur(‘小明‘,19);
一般如果这个类很少使用,那么这样做没什么太大影响,也非常好。
突然我想给这个类增加一个归类,把小明放入学生组,修改下类代码实现非常容易,但如果这个类在我们想修改之前在很多文件地方多次的实例化了,那么想为其增加一个参数就会变的非常烦琐,因为需要替换成:
环境质量管理体系$u = new ur(‘小明‘,19,‘学生‘);
当然我们也可以通过在__construct函数中进行默认值设置来避免这种重复劳动,但事实上从代码优雅角度来说这样很不好,设想我们有一个工厂方法可以通过一个标识来对应一组参数,并把这个参数存放在某个文本文档或是直接以数组的形式存放在工厂类中,我们在调用ur类的时候就会变的轻松许多,即便是需要增减参数属性也不需要到处进行代码的替换,下面就是一个工厂类(也可以直接将方法存放在ur类)
复制代码 代码如下:
interface iur{
function getname();
function getage();
}
class ur implements iur{
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;
}
functio长直线n getage(){
江西师范大学是一本还是二本院校
return $this->_age;
}
}
class fur{
private static $group = array(
array(‘小明‘,19,‘学生‘),
array(‘小王‘,19,‘学生‘)
);
static function create($id){
list($name, $age, $group) = lf::$group[(int)$id];
return new ur($name, $age, $group);
}
}
echo fur::create(0)->get端午节的来历简短50字name();
得到的结果应该是输出“小明”。
本文发布于:2023-04-06 12:04:07,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/46a36626dfe9849ded7227073fd5c6ae.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:解析PHP工厂模式的好处.doc
本文 PDF 下载地址:解析PHP工厂模式的好处.pdf
留言与评论(共有 0 条评论) |