interface IUser
{
function getName();
}
class User implements IUser
{
public function __construct( $id ) { }
public function getName()
{
return "Jack";
}
}
class UserFactory
{
public static function Create( $id )
{
return new User( $id );
}
}
$uo = UserFactory::Create( 1 );
echo( $uo->getName()."\n" );
?>
IUser
接口定义用户对象应执行什么操作。
IUser
的实现称为
Use
r
,
UserFactory
工厂类则创建
IUser
对象。此关系可以用图 1
中的 UML 表示。
图 1.
工厂类及其相关 IUser 接口和用户类
如果您使用
php
解释器在命令行上运行此代码,将得到如下结果:
% php factory1.php
Jack
%
测试代码会向工厂请求
User
对象,并输出
getName
方法的结果。