2013-07-16 61 views
2

我有一個PHP的MVC應用程序。我的'M'包括域對象,工廠和映射器。該模型通過服務層進行訪問。我的工廠應該創建所有對象實例嗎?包括新實體?

很明顯,我的Mappers使用工廠從數據庫中檢索時創建對象。但是,工廠應該爲所有「新」實體創建對象,例如爲新用戶?

我認爲答案是肯定的,但只是想檢查。我會使用工廠來提供默認值作爲他們的任務之一。

作爲一個觀點:是否有任何術語來區分'新'實體與從數據庫中檢索的實體? (我不喜歡使用'new',因爲new關鍵字在所有對象實例之前,甚至基於從數據庫中檢索的數據)。

回答

1

是的。當然。工廠應該爲新實體創建對象。這是工廠模式的用途。作爲一方,考慮用於格式化非數據密集型實體的斐波那契序列。

+0

謝謝stack_temp。不確定(完全)您的意思是「用於格式化的斐波納契序列....」 –

1

首先想到的是說是,因爲這是工廠應該做的事情:創建複雜對象或隱藏對象創建,但我想提兩點要考慮。
這些要點和我要提出的術語取自Eric Evans出色的書Domain Driven Design

  1. 實體FACTORY用於復原不分配新的 跟蹤ID。

  2. 一廠重建對象將處理違規的 不變的不同。

最後一點強調,如果將工廠從存儲介質恢復的對象,然後它不應該採取錯誤的對象狀態(如損壞的對象)略有而是他們根本對付。

對於我所說的使用創建對象的新術語和保存或重新組合對象來保存對象的術語。

相關問題