工厂模式代码如下:
<?php
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" );
?>感觉 $uo 在执行的过程中,并没有涉及到接口 IUser 啊 
为什么前面要加个这个啊? 
interface IUser
{
  function getName();
}
而且为什么 class UserFactory
{
  public static function Create( $id )
  {
    return new User( $id );
  }
}
为什么这个方法要用static

解决方案 »

  1.   

    一定用到了吧,User 实现的Iuser的方法呀!$uo = UserFactory::Create( 1 ); //相当于$uo= new User(1) echo( $uo->getName()."\n" );个人理解!!不知道对不对,
      

  2.   

    UserFactory::Create( 1 );
    相当于执行了UserFactory里的Create
    在Create中式返回的User
    也就是创建了User对象$uo = UserFactory::Create( 1 );
    也就是楼上说的:相当于$uo= new User(1) 
    $uo->getName() 自然就可以调用了
    UserFactory::主要是static方法调用 
    既然是返回对象 就可以直接返回 不需要再次创建UserFactory对象
      

  3.   

    弱类型语言, 没必要过于注重模式, 有mvc足够应付大部份项目, 特殊情况再小添小补。
      

  4.   

    class User implements IUser
    在定义类 User 时声明了要实现接口 IUser
    换句话说,在 User 类中,必须要定义接口 IUser 中的方法
    这要就可以达到防止忘记定义方法 getName 时造成的运行时刻错误方法被声明为 static (静态)时,等同于一个函数(为该类所有实例共有)。可以节省空间
      

  5.   

    这个是IBM上面看到的 http://www.ibm.com/developerworks/cn/opensource/os-php-designptrns/index.html
      

  6.   


    interface IUser
    {
      function getName();
    }
    为什么要弄个接口 来实现它??
      

  7.   


    别因为模式而拖累了正确的学习方向, 那些模式生产归根到底是强类型语言不能随便引用, 调用, 赋值而造成的, 在java里或者很需要, 但php不是
      

  8.   


    这个接口不是 工厂模式必须的,
    工厂模式的关键在于下面那部分用::create代替了new你看一些别的例子就明白了