2009-12-17 83 views
0

我有以下佈局:我應該圍繞這個實體構建一個包裝嗎?

實體:

Order 
OrderItem 

DAO類:

OrderDAO 
OrderItemDAO 

所以我有POCO類和DAO類。

現在我想上面的實體封裝到另一個實體,這樣我就可以有這樣的方法:

x.AddItem(OrderItem item) 
x.CalculateTotal(); 
x.CalculateShipping(); 
x.Charge(); 

什麼將這種類型的實體被稱爲?廠?或者只是一個簡單的包裝類?

回答

2

通常情況下,我把我的代碼庫分爲幾個層次:模型層,數據訪問層,經理/業務邏輯層和UI

在這種情況下,我建議留單/ OrderItem的波蘇斯和創建一個OrderManager類。這將是一個無狀態的單身人士,並具有AddItem(Order,OrderItem)等方法。在內部,它將處理更新模型,提交數據更改,任何事務性等細節。

+0

我喜歡這個解決方案。夠優雅。雖然,有一點想知道它是否會在「經理」類和DAO層之間產生(強)耦合。 – Romain 2009-12-17 21:03:10

+0

DAO層處理加載/查詢/提交,並且可以在構建期間通過接口交給管理器(在Java land中,我使用Guice進行這種注入)。我發現,如果你至少走了那麼遠(依賴注入),你不需要擔心抽象接口,直到你真的需要,因爲抽象線是很好理解的。 – Aaron 2009-12-17 21:04:58

1

它肯定不是工廠(可能是創建您的「聯合」實體的對象)。可能是一個包裝,是的。但爲什麼沒有Order實體管理其OrderItem直接通過創建兩者之間的關係?

0

聽起來更像是一個門面模式給我。隱藏執行這些各種過程的行爲的實際執行情況。或者從外行的角度來看,封裝是正確的。

請看這裏:http://en.wikipedia.org/wiki/Facade_pattern

相關問題