工廠模式
一、簡單工廠模式
它與靜態工廠模式最大的區別是它不是『靜態』的。由於非靜態,因此你能夠擁有多個不一樣參數的工廠,你能夠爲其建立子類。甚至能夠模擬(Mock)他,這對編寫可測試的代碼來說相當重要。 這也是它比靜態工廠模式受歡迎的緣由!
Tests/SimpleFactoryTest.php
二、靜態工廠模式
與抽象工廠模式相似,此模式用於建立一系列相關或相互依賴的對象。 『靜態工廠模式』與『抽象工廠模式』的區別在於,只使用一個靜態方法來建立全部類型對象, 此方法一般被命名爲 factory 或 build。
Zend Framework: Zend_Cache_Backend 或 _Frontend 使用工廠方法建立緩存後端或前端
Tests/StaticFactoryTest.php
三、抽象工廠模式
在不指定具體類的狀況下建立一系列相關或依賴對象。 一般建立的類都實現相同的接口。 抽象工廠的客戶並不關心這些對象是如何建立的,它只是知道它們是如何一塊兒運行的。
Tests/AbstractFactoryTest.php
單例模式
單例模式確保某個類只有一個實例,並且自行實例化並向整個系統提供這個實例。
單例模式是一種常見的設計模式,在計算機系統中,線程池、緩存、日誌對象、對話框、打印機、數據庫操做、顯卡的驅動程序常被設計成單例。
單例模式分3種:懶漢式單例、餓漢式單例、登記式單例。
PHP一個主要應用場合就是應用程序與數據庫打交道的場景,在一個應用中會存在大量的數據庫操做,針對數據庫句柄鏈接數據庫的行爲,使用單例模式能夠避免大量的new操做。由於每一次new操做都會消耗系統和內存的資源。
策略模式
策略模式是對象的行爲模式,用意是對一組算法的封裝。動態的選擇須要的算法並使用。
策略模式指的是程序中涉及決策控制的一種模式。策略模式功能很是強大,由於這個設計模式自己的核心思想就是面向對象編程的多形性思想。
1.定義抽象角色類(定義好各個實現的共同抽象方法)
3.定義環境角色類(私有化申明抽象角色變量,重載構造方法,執行抽象方法)
就在編程領域以外,有許多例子是關於策略模式的。例如:
若是我須要在早晨從家裏出發去上班,我能夠有幾個策略考慮:我能夠乘坐地鐵,乘坐公交車,走路或其它的途徑。每一個策略能夠獲得相同的結果,可是使用了不一樣的資源。
觀察者模式
1:觀察者模式(Observer),當一個對象狀態發生變化時,依賴它的對象所有會收到通知,並自動更新。
2:場景:一個事件發生後,要執行一連串更新操做。傳統的編程方式,就是在事件的代碼以後直接加入處理的邏輯。當更新的邏輯增多以後,代碼會變得難以維護。這種方式是耦合的,侵入式的,增長新的邏輯須要修改事件的主體代碼。
3:觀察者模式實現了低耦合,非侵入式的通知與更新機制。 定義一個事件觸發抽象類。
註冊模式
註冊模式,解決全局共享和交換對象。已經建立好的對象,掛在到某個全局可使用的數組上,在須要使用的時候,直接從該數組上獲取便可。將對象註冊到全局的樹上。任何地方直接去訪問。
適配器模式
將各類大相徑庭的函數接口封裝成統一的API。 PHP中的數據庫操做有MySQL,MySQLi,PDO三種,能夠用適配器模式統一成一致,使不一樣的數據庫操做,統一成同樣的API。相似的場景還有cache適配器,能夠將memcache,redis,file,apc等不一樣的緩存函數,統一成一致。 首先定義一個接口(有幾個方法,以及相應的參數)。而後,有幾種不一樣的狀況,就寫幾個類實現該接口。將完成類似功能的函數,統一成一致的方法。