$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();