2014-12-07 46 views
3

工廠應該負責查找模型並創建它們嗎?在PHP和Laravel中使用工廠模式

例如:

如果我有一個產品模型,應當在其工廠是否有方法,如:

$product = $productFactory->findByID(32); 

$product = $productFactory->all(); 

$product = $productFactory->findByName($productName); 

$product = $productFactory->create($data); 

回答

9

嗯,其實Factory Pattern是使用工廠方法來處理該問題的creational pattern即使沒有指定staic類也會創建對象,這意味着它會在run-time處動態創建對象。該模式用於處理客戶機類的對象創建機制,以便使用基於運行時構建的動態類。此模式使用工廠方法(抽象),並且此方法根據使用構建對象的客戶端類的請求使用其他類/對象構建對象。好吧,無論如何,這是一件很寬泛的事情。

而不是思考設計模式,例如你應該遵循哪種模式,試着找出你的類的用例並相應地使用它們。很可能你的意思是Model作爲擴展Eloquent ORM的類,在這種情況下,如果擴展Eloquent ORM,則模型類已經具有這些方法,因此不需要在類中創建這些方法,而是將業務邏輯和數據庫層分開使用普通的類,你可以使用這些類作爲依賴從數據庫圖層類中調用方法。可能這聽起來很混亂。

這取決於你如何組織你的目錄結構,但只考慮SoC,這足以得到一個乾淨的應用程序架構模式的想法。不要以爲設計模式太深,而應該考慮一個乾淨的應用程序模型,就是這樣。大概this article may help you一點點(特別使用LaravelRepository Pattern討論)。

對於Factory Pattern,你可以檢查this簡單但有幫助的文章。