解析PHP工厂模式的好处
2015-01-24信息快讯网
本篇文章是对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 面向对象程序设计(oop)学习笔记(三) - 单例模式和工厂模式
php不写闭合标签的好处
PHP中的按位与和按位或操作示例
php遍历目录输出目录及其下的所有文件示例
PHP中source #N问题的解决方法
php计算数组不为空元素个数的方法
php 启动时报错的简单解决方法
php设计模式之单例模式使用示例
浅析ThinkPHP中的pathinfo模式和URL重写
php设计模式之单例、多例设计模式的应用分析
PHP多例模式介绍
解析php中的fopen()函数用打开文件模式说明
深入array multisort排序原理的详解
PHP实现邮件群发的源码
解析PHP跨站刷票的实现代码
解析PHP SPL标准库的用法(遍历目录,查找固定条件的文件)
360通用php防护代码(使用操作详解)
浅析PHP程序防止ddos,dns,集群服务器攻击的解决办法
PHP设计模式之调解者模式的深入解析
PHP设计模式之迭代器模式的深入解析
PHP设计模式之解释器模式的深入解析
PHP设计模式之代理模式的深入解析
PHP设计模式之责任链模式的深入解析
基于php设计模式中工厂模式详细介绍
PHP中“简单工厂模式”实例代码讲解
PHP最常用的2种设计模式工厂模式和单例模式介绍
Zend Framework中的简单工厂模式 图文
工厂模式在Zend Framework中应用介绍