php 工厂模式的好处,关于使用php工厂模式的好处分析

我们在之前给大家介绍了php工厂模式中的三种,以及什么是php工厂模式,为什么要用php工厂模式,那么我们今天就给大家详细介绍下关于php工厂模式的使用好处!

一般我们实例化一个类会给它一些参数以便在其构析的时候可以根据不同的参数反馈出我们需要的结果。

举例说明,以下是一个User类,非常简单:

代码如下:<?php

interface IUser{

function getName();

function getAge();

}

class User implements 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;

}

}

?>

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

$u = new User(‘小明‘,19);一般如果这个类很少使用,那么这样做没什么太大影响,也非常好。

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

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

代码如下:interface IUser{

function getName();

function getAge();

}

class User implements 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(‘小明‘,19,‘学生‘),

array(‘小王‘,19,‘学生‘)

);

static function create($id){

list($name, $age, $group) = self::$group[(int)$id];

return new User($name, $age, $group);

}

}

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

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

总结:

相信小伙伴们对php工厂模式的使用好处有了一定的理解,可以根据本文所学的东西,实践在自己的工作中!

相关推荐:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值