溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

PHP中的工廠模式的詳細(xì)介紹

發(fā)布時間:2021-08-11 21:59:16 來源:億速云 閱讀:99 作者:chen 欄目:編程語言

本篇內(nèi)容主要講解“PHP中的工廠模式的詳細(xì)介紹”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“PHP中的工廠模式的詳細(xì)介紹”吧!

工廠模式是一種類,它具有為您創(chuàng)建對象的某些方法。您可以使用工廠類創(chuàng)建對象,而不直接使用 new。這樣,如果您想要更改所創(chuàng)建的對象類型,只需更改該工廠即可。使用該工廠的所有代碼會自動更改。

示例1:顯示工廠類的一個示列。等式的服務(wù)器端包括兩個部分:數(shù)據(jù)庫和一組 PHP 頁面,這些頁面允許您添加反饋、請求反饋列表并獲取與特定反饋相關(guān)的文章。

<?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" );  ?>

IUser接口定義用戶對象應(yīng)執(zhí)行什么操作。IUser 的實(shí)現(xiàn)稱為 User,UserFactory 工廠類則創(chuàng)建 IUser 對象。此關(guān)系可以用圖1中的UML 表示。

PHP中的工廠模式的詳細(xì)介紹
圖 1. 工廠類及其相關(guān) IUser 接口和用戶類

如果您使用 php 解釋器在命令行上運(yùn)行此代碼,將得到如下結(jié)果:

% php factory1.php   Jack  %

測試代碼會向工廠請求 User 對象,并輸出 getName 方法的結(jié)果。

有一種工廠模式的變體使用工廠方法。類中的這些公共靜態(tài)方法構(gòu)造該類型的對象。如果創(chuàng)建此類型的對象非常重要,此方法非常有用。例如,假設(shè)您需要先創(chuàng)建對象,然后設(shè)置許多屬性。此版本的工廠模式會將該進(jìn)程封裝在單個位置中,這樣,不用復(fù)制復(fù)雜的初始化代碼,也不必將復(fù)制好的代碼在在代碼庫中到處粘貼。

示例2 顯示使用工廠方法的一個示例。

<?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 和一個實(shí)現(xiàn)此接口的 User 類。User 類有兩個創(chuàng)建對象的靜態(tài)方法。此關(guān)系可用圖 2 中的 UML 表示。

PHP中的工廠模式的詳細(xì)介紹
圖 2. IUser 接口和帶有工廠方法的 user 類

在命令行中運(yùn)行腳本產(chǎn)生的結(jié)果與清單 1 的結(jié)果相同,如下所示:

% php factory2.php   Jack  %

如上所述,有時此類模式在規(guī)模較小的環(huán)境中似乎有些大材小用。不過,***還是學(xué)習(xí)這種扎實(shí)的編碼形式,以便應(yīng)用于任意規(guī)模的項目中。

到此,相信大家對“PHP中的工廠模式的詳細(xì)介紹”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI