PHP 實戰之設計模式:PHP 中的設計模式

發表於2016-07-18

本文為翻譯文章

原文地址:Design Patterns in PHP
如果打算學習PHP的童鞋可以參考下筆者的程式語言學習知識體系要點列表

本文主要討論下Web開發中,準確而言,是PHP開發中的相關的設計模式及其應用。有經驗的開發者肯定對於設計模式非常熟悉,但是本文主要是針對那 些初級的開發者。首先我們要搞清楚到底什麼是設計模式,設計模式並不是一種用來解釋的模式,它們並不是像連結串列那樣的常見的資料結構,也不是某種特殊的應用 或者框架設計。事實上,設計模式的解釋如下:

descriptions of communicating objects and classes that are customized to solve a general design problem in a particular context.

另一方面,設計模式提供了一種廣泛的可重用的方式來解決我們日常程式設計中常常遇見的問題。設計模式並不一定就是一個類庫或者第三方框架,它們更多的表 現為一種思想並且廣泛地應用在系統中。它們也表現為一種模式或者模板,可以在多個不同的場景下用於解決問題。設計模式可以用於加速開發,並且將很多大的想 法或者設計以一種簡單地方式實現。當然,雖然設計模式在開發中很有作用,但是千萬要避免在不適當的場景誤用它們。

目前常見的設計模式主要有23種,根據使用目標的不同可以分為以下三大類:

  • 建立模式:用於建立物件從而將某個物件從實現中解耦合。
  • 架構模式:用於在不同的物件之間構造大的物件結構。
  • 行為模式:用於在不同的物件之間管理演算法、關係以及職責。

Creational Patterns

Singleton(單例模式)

單例模式是最常見的模式之一,在Web應用的開發中,常常用於允許在執行時為某個特定的類建立一個可訪問的例項。

在很多情況下,需要為系統中的多個類建立單例的構造方式,這樣,可以建立一個通用的抽象父工廠方法:

Registry

註冊臺模式並不是很常見,它也不是一個典型的建立模式,只是為了利用靜態方法更方便的存取資料。

Factory(工廠模式)

工廠模式是另一種非常常用的模式,正如其名字所示:確實是物件例項的生產工廠。某些意義上,工廠模式提供了通用的方法有助於我們去獲取物件,而不需要關心其具體的內在的實現。

AbstractFactory(抽象工廠模式)

有些情況下我們需要根據不同的選擇邏輯提供不同的構造工廠,而對於多個工廠而言需要一個統一的抽象工廠:

Object pool(物件池)

物件池可以用於構造並且存放一系列的物件並在需要時獲取呼叫:

Lazy Initialization(延遲初始化)

對於某個變數的延遲初始化也是常常被用到的,對於一個類而言往往並不知道它的哪個功能會被用到,而部分功能往往是僅僅被需要使用一次。

Prototype(原型模式)

有些時候,部分物件需要被初始化多次。而特別是在如果初始化需要耗費大量時間與資源的時候進行預初始化並且儲存下這些物件。

Builder(構造者)

構造者模式主要在於建立一些複雜的物件:

Structural Patterns

Decorator(裝飾器模式)

裝飾器模式允許我們根據執行時不同的情景動態地為某個物件呼叫前後新增不同的行為動作。

Adapter(介面卡模式)

這種模式允許使用不同的介面重構某個類,可以允許使用不同的呼叫方式進行呼叫:

Behavioral Patterns

Strategy(策略模式)

測試模式主要為了讓客戶類能夠更好地使用某些演算法而不需要知道其具體的實現。

Observer(觀察者模式)

某個物件可以被設定為是可觀察的,只要通過某種方式允許其他物件註冊為觀察者。每當被觀察的物件改變時,會傳送資訊給觀察者。

Chain of responsibility(責任鏈模式)

這種模式有另一種稱呼:控制鏈模式。它主要由一系列對於某些命令的處理器構成,每個查詢會在處理器構成的責任鏈中傳遞,在每個交匯點由處理器判斷是否需要對它們進行響應與處理。每次的處理程式會在有處理器處理這些請求時暫停。

 

相關文章