PHP設計模式

來源:互聯網
上載者:User

標籤:記憶體   全域   實現   對象屬性   pdo   讀取配置   ...   依賴倒置   設計模式   

三種基礎設計模式

註冊模式: 註冊類,可以用於全域調用

原廠模式:用於建立對象。好處:如果被調用的對象需要進行修改,那麼使用原廠模式便只修改一個地方就好

單例模式:不重複new 對象

適配器模式

1、適配器模式,可以將截然不同的函數介面封裝成統一的API

2、實際應用舉例,php的資料庫操作有mysql,mysqli,pdo3種可以用適配器模式統一成一致。類似的情境還有cache適配器,將memcache,redis,file,apc等不同的緩衝函數統一成一致

3、注意的是,代碼說的不夠完全,還需要進行封裝、改

策略模式

1、策略模式,將一組特定的行為和演算法封裝成類,以適應某些特定的上下文環境,這種模式就是策略模式 2、實際應用舉例,假如一個電商網站系統,針對男性女性使用者要各自跳轉到不同的商品類名,並且所有廣告位展示不同的廣告,傳統的做法是加入if...else... 判斷。 如果新增加一種使用者類型,只需要新增加一種策略即可``

資料對象映射模式

1、資料對象映射模式,是將對象和資料存放區起來,對一個對象的操作會映射為對資料存放區的操作

2、在代碼鐘實現資料對象映射模式,我們將試下ORM類,將複雜的sql語句映射成對象屬性的操作

3、結合是喲弄個資料對象映射模式,原廠模式,註冊模式

4、訪問對象屬性的時候就修改目前記錄對象的資料庫記錄

觀察者模式

1、觀察者模式(Observer),當一個對象狀態發生改變時,以來它的對象會全部收到通知,並自動更新

2、情境:一個事件發生後,要執行一連串更新操作。傳統的編程方式,就是在事件的代碼之後直接加入處理邏輯。當更新的邏輯增多之後,代碼會邊得難以維護。這種方式是耦合的,侵入式的,增加新的邏輯需要修改事件主題的代碼

3、觀察者模式實現了低耦合,非侵入式的通知與更新機制

原型模式

1、與原廠模式作用類似,都是用來建立對象

2、與原廠模式的實現不同,原型模式是先建立好一個原型對象,然後通過clone原型對象來建立新的對象。這樣就免去了類建立時重複的初始化操作

3、原型模式適用於大對象的建立,建立一個大對象需要很大的開銷,如果每次new就會消耗很大,原型模式僅需記憶體拷貝即可

裝飾器模式

1、裝飾器模式(Decorator),可以動態地添加修改類的功能

2、一個類提供了一項功能,如果要在修改並添加額外的功能,傳統的編程模式,需要寫一個子類繼承它,並重新實作類別的方法

使用裝飾器模式,僅需在運行時添加一個裝飾器對象即可實現,可以實現最大的靈活性

迭代器模式

1、迭代器模式,在不需要瞭解內部實現的前提下,遍曆一個彙總對象的內部元素

2、相比傳統的編程模式,迭代器模式可以隱藏遍曆元素所需的操作

3、 應用情境 遍曆資料庫表,拿到所有的user對象,然後用佛 foreach 迴圈,在迴圈的過程中修改某些字

4、如果一個對象是一個集合,比如資料結果集。 我們通常需要逐個取出每一個元素,如果想用foreach逐個取出的話,集合類需要繼承迭代器介面,實現介面中的方法,才可以被foreach迭代。 迭代器模式其實就是可使用foreach模式

代理模式

1、 在用戶端與實體之間建立一個代理對象(proxy),用戶端對實體進行的操作全部委派給代理對象,隱藏實體的具體實現細節。

2、 Proxy還可以與業務代碼分離,部署到另外的伺服器,業務代碼中通過RPC來委派任務。

3、樣本:讀寫分離

物件導向編程的基本原則

1、單一職責:一個類,只需做好一件事請。

2、開放封閉:一個類,應該時可擴充的,而不可修改的。

3、依賴倒置:一個類,不應該強依賴另外一個類。每個類對於另外一個類都是可替換的。

4、配置化:儘可能地使用配置,而不是寫入程式碼

5、面向介面編程:只需要關心介面,不需要關心實現。

配置與設計模式

1、PHP中使用ArrayAccess實現設定檔的載入

2、在Factory 方法中讀取配置,產生可配置化的對象

3、使用裝飾器模式實現許可權驗證,模板渲染,JSON串化

4、使用觀察者模式實現資料更新事件的一系列更新操作

5、使用代理模式實現資料庫的主從自動切換

PHP設計模式

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.