程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 更好的構造開發模板 五種PHP設計模式

更好的構造開發模板 五種PHP設計模式

編輯:關於PHP編程

設計模式只是為 Java 架構師准備的 —— 至少您可能一直這樣認為。實際上,設計模式對於每個人都非常有用。如果這些工具不是 “架構太空人” 的專利,那麼它們又是什麼?為什麼說它們在 php(做為現在的主流開發語言) 應用程序中非常有用?本文解釋了這些問題。

  設計模式 一書將設計模式引入軟件社區,該書的作者是 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides Design(俗稱 “四人幫”)。所介紹的設計模式背後的核心概念非常簡單。經過多年的軟件開發實踐,Gamma 等人發現了某些具有固定設計的模式,就像建築師設計房子和建築物一樣,可以為浴室的位置或廚房的構造方式開發模板。使用這些模板或者說設計模式 意味著可以更快地設計更好的建築物。同樣的概念也適用於軟件。

  設計模式不僅代表著更快開發健壯軟件的有用方法,而且還提供了以友好的術語封裝大型理念的方法。例如,您可以說您正在編寫一個提供松散耦合的消息傳遞系統,也可以說你正在編寫名稱為觀察者 的模式。

  用較小的示例展示模式的價值是非常困難的。這往往有些大材小用的意味,因為模式實際上是在大型代碼庫中發揮作用的。本文不展示大型應用程序,所以您需要思索的是在您自己的大型應用程序中應用示例原理的方法 —— 而不是本文演示的代碼本身。這不是說您不應該在小應用程序中使用模式。很多良好的應用程序都以小應用程序為起點,逐漸發展到大型應用程序,所以沒有理由不以此類扎實的編碼實踐為基礎。 既然您已經了解了設計模式以及它們的有用之處,現在我們來看看 php(做為現在的主流開發語言) V5 的五種常用模式。

  工廠模式

  最初在設計模式 一書中,許多設計模式都鼓勵使用松散耦合。要理解這個概念,讓我們最好談一下許多開發人員從事大型系統的艱苦歷程。在更改一個代碼片段時,就會發生問題,系統其他部分 —— 您曾認為完全不相關的部分中也有可能出現級聯破壞。

  該問題在於緊密耦合 。系統某個部分中的函數和類嚴重依賴於系統的其他部分中函數和類的行為和結構。您需要一組模式,使這些類能夠相互通信,但不希望將它們緊密綁定在一起,以避免出現聯鎖。 在大型系統中,許多代碼依賴於少數幾個關鍵類。需要更改這些類時,可能會出現困難。例如,假設您有一個從文件讀取的 User 類。您希望將其更改為從數據庫讀取的其他類,但是,所有的代碼都引用從文件讀取的原始類。這時候,使用工廠模式會很方便。

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

  清單 1 顯示工廠類的一個示列。等式的服務器端包括兩個部分:數據庫和一組 php(做為現在的主流開發語言) 頁面,這些頁面允許您添加反饋、請求反饋列表並獲取與特定反饋相關的文章。

  清單 1. Factory1.php(做為現在的主流開發語言)

<?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()." " );
?>
  IUser 接口定義用戶對象應執行什麼操作。IUser 的實現稱為 User,UserFactory 工廠類則創建 IUser 對象。此關系可以用圖 1 中的 UML 表示。


圖 1. 工廠類及其相關 IUser 接口和用戶類
  如果您使用 php(做為現在的主流開發語言) 解釋器在命令行上運行此代碼,將得到如下結果:

% php(做為現在的主流開發語言) factory1.php(做為現在的主流開發語言)
Jack
%
  測試代碼會向工廠請求 User 對象,並輸出 getName 方法的結果。

  有一種工廠模式的變體使用工廠方法。類中的這些公共靜

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved