Rumah > pembangunan bahagian belakang > tutorial php > php中常见的工厂设计模式详解

php中常见的工厂设计模式详解

黄舟
Lepaskan: 2023-03-15 14:22:02
asal
1317 orang telah melayarinya

一、工厂模式
是一种类,它具有为您创建对象的某些方法。您可以使用工厂类创建对象,而不直接使用 new。这样,如果您想要更改所创建的对象类型,只需更改该工厂即可。使用该工厂的所有代码会自动更改。

下面代码为显示工厂类的一个示列。等式的服务器端包括两个部分:数据库和一组 PHP 页面,这些页面允许您添加反馈、请求反馈列表并获取与特定反馈相关的文章。

IUser 接口定义用户对象应执行什么操作:


interface IUser
{  function getName();
}
Salin selepas log masuk

  IUser 的实现称为 User:


class User implements IUser
{  public function __construct( $id ) { } 
  public function getName()
  {    return "Jack";
  }
}
Salin selepas log masuk

  UserFactory 工厂类则创建 IUser 对象:


class UserFactory
{  public static function Create( $id )
  {    return new User( $id );
  }
}
Salin selepas log masuk

  测试代码会向工厂请求 User 对象,并输出 getName 方法的结果:


$pr = UserFactory::Create( 1 );echo( $pr->getName()."\n" );
Salin selepas log masuk

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


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" );
Salin selepas log masuk

Atas ialah kandungan terperinci php中常见的工厂设计模式详解. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan