一、工廠模式
是一種類,它具有為您建立物件的某些方法。您可以使用工廠類別建立對象,而不直接使用 new。這樣,如果您想要更改所建立的物件類型,只需更改該工廠即可。使用該工廠的所有代碼會自動變更。
下面程式碼為顯示工廠類別的一個示列。等式的伺服器端包括兩個部分:資料庫和一組 PHP 頁面,這些頁面可讓您新增回饋、請求回饋清單並取得與特定回饋相關的文章。
IUser 介面定義使用者物件要執行什麼動作:
interface IUser { function getName(); }
IUser 的實作稱為User:
class User implements IUser { public function __construct( $id ) { } public function getName() { return "Jack"; } }UserFactory 工廠類別則建立IUser 物件:############
class UserFactory { public static function Create( $id ) { return new User( $id ); } }### 測試程式碼會向工廠請求 ###User### 對象,並且輸出 ###getName ### 方法的結果:############
$pr = UserFactory::Create( 1 );echo( $pr->getName()."\n" );### 有一種工廠模式的變體使用工廠方法。類別中的這些公共靜態方法建構該類型的物件。如果建立此類型的物件非常重要,此方法非常有用。例如,假設您需要先建立對象,然後設定許多屬性。此版本的工廠模式會將該進程封裝在單一位置中,這樣,不用複製複雜的初始化程式碼,也不必將複製好的程式碼在在程式碼庫中到處貼上。 ############
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" );
以上是php中常見的工廠設計模式詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!