五種常見的PHP設計模式

來源:互聯網
上載者:User

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

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

用較小的樣本展示模式的價值是非常困難的。這往往有些大材小用的意味,因為模式實際上是在大型程式碼程式庫中發揮作用的。本文不展示大型應用程式,所以您需要思索的是在您自己的大型應用程式中應用樣本原理的方法 ——而不是本文示範的代碼本身。這不是說您不應該在小應用程式中使用模式。很多良好的應用程式都以小應用程式為起點,逐漸發展到大型應用程式,所以沒有理由不以此類紮實的編碼實踐為基礎。

既然您已經瞭解了設計模式以及它們的有用之處,現在我們來看看 PHP5 的五種常用模式。

原廠模式

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

該問題在於緊密耦合 。系統某個部分中的函數和類嚴重依賴於系統的其他部分中函數和類的行為和結構。您需要一組模式,使這些類能夠相互連信,但不希望將它們緊密綁定在一起,以避免出現聯鎖。

在大型系統中,許多代碼依賴於少數幾個關鍵類。需要更改這些類時,可能會出現困難。例如,假設您有一個從檔案讀取的 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()."\n" );
?>

IUser 介面定義使用者物件應執行什麼操作。IUser 的實現稱為 User,UserFactory 工廠類則建立 IUser 對象。此關係可以用圖 1 中的 UML 表示。

圖 1. 工廠類及其相關 IUser 介面和使用者類

如果您使用 php 解譯器在命令列上運行此代碼,將得到如下結果:

測試代碼會向工廠請求 User 對象,並輸出 getName 方法的結果。

% php factory1.php
Jack
%

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.