background image

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

 

清单 2 显示使用工厂方法的一个示例。

 

清单 2. Factory2.php

<?php

interface 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 表示。