PHP设计模式—-工厂模式(下)

有一种工厂模式的变体使用工厂方法。类中的这些公共静态方法构造该类型的对象。如果创建此类型的对象非常重要,此方法非常有用。例如,假设您需要先创建对象,然后设置许多属性。此版本的工厂模式会将该进程封装在单个位置中,这样,不用复制复杂的初始化代码,也不必将复制好的代码在在代码库中到处粘贴。清单 2 显示使用工厂方法的一个示例。

清单2: Factory2.php
<?phpinterface IUser
{
function getName();
}

class User implements IUser
{
public static function Load( $id )
{
return new User( $id );
}

public static function Create( )
{
return new User( null );
}

public function __construct( $id ) { }

public function getName()
{
return “Jack”;
}
}

$uo = User::Load( 1 );
echo( $uo->getName().\n );

?>

这段代码要简单得多。它仅有一个接口 IUser 和一个实现此接口的 User 类。User 类有两个创建对象的静态方法。此关系可用图2中的UML表示。

IUser 接口和带有工厂方法的 user 类

图2.IUser接口和带有工厂方法的 user 类

在命令行中运行脚本产生的结果与清单 1 的结果相同,即“Jack”。

通过以上两个例子,我们会发现工厂模式在规模较小的环境中有些大材小用。不过,最好还是学习这种扎实的编码形式,以便应用于任意规模的项目中。

注:工厂模式的优点就在创建对象上。 它的任务就是把对象的创建过程都封装起来,然后返回一个所需要的新类。这样工厂模式便可以轻松改变对象的结构和建立对象的方式。

相关文章: 

If you enjoyed this post, please consider to leave a comment or subscribe to the feed and get future articles delivered to your feed reader.

Comments

你是做PHP的?

恩,是做PHP的

发表评论

(必填)

(必填)