PHP設計模式


三種基礎設計模式

注冊模式: 注冊類,可以用於全局調用

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

單例模式:不重復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、在工廠方法中讀取配置,生成可配置化的對象

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

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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM