1. 程式人生 > >php設計模式之工廠設計模式

php設計模式之工廠設計模式

方便 都是 避免 支付寶 高級 acl mage 概念 actor

概念:

工廠設計模式提供獲取某個對象的新實例的一個接口,同時使調用代碼避免確定實際實例化基類步驟。 很多高級模式都是依賴於工廠模式。

好處:

PHP中能夠創建基於變量內容的類的新實例,減少主代碼流中的基於條件復雜性; 同時如果類發生改變不需要所有的地方進行修改,只需要在工廠中進行修改 (無論對象被修改或者添加其他對象,Factory對象調用方式仍讓是相同的)(集中實例化)

應用場景:

做支付接口的時候,未來可能對應不同的支付網關:支付寶、財付通、網銀在線等。方便未來擴展,設計成工廠模式。定一個專門生產網關接口的工廠,抽象出來, 做成接口形式,讓所有的子類都要實現它的接口。 以後加一個支付方式,要使用哪一種支付方式,改變一下參數即可。

在為用戶註冊的時候,分為很多種角色的用戶。 比如冊用戶,匿名用戶、管理員用戶等。完全使用可以使用工廠的思想來實現, 代碼也容易維護,為每種角色可以生成操作的類等等。

系統對接多個不同類型的數據庫,mysql,oracle,sqlserver。

實例代碼:

簡單工廠模式Factory,提供一個工廠方法供客戶端調用。可能違反開閉原則。

技術分享圖片

工廠方法:一個工廠生產多個零件,但零件共同特點是屬於一個產品。 此工廠可以生產產品,而非單獨的對象。

技術分享圖片技術分享圖片

示例三:通過傳入不同參數

技術分享圖片

示例四:通過傳入不同參數,動態實例化不同的類。

技術分享圖片

php設計模式之工廠設計模式