2012-02-20 45 views
1

說我定義了一組項目。這些項目必須分組到不同的集合中。 E.g項目能像無狀態服務中心方法vs有狀態豐富模型

public Item { 
    public int id; 
    public String name; 
} 

,並設置有自己的設置,例如哪些項目屬於這個組,設置的內容的名稱等。現在所有的東西存儲在,說XML結構。

我最初的想法是寫以下元素:

  • XML解析器來獲取設置的數據,並轉化爲MYSET POJO

  • XML解析器來獲取所有項目,並轉化爲項目的POJO名單

  • 無狀態服務類類說ItemsSetCreator計算最終ItemsSet對象包含基於MySet的集合的定義和項目列表如

    class ItemsSetCreator { 
    
        public ItemsSet createItemsSet(List<Item> items, MySet set) { 
         // ... 
        } 
    } 
    

但另一種方法是將豐富的模型了一下,寫SHT喜歡:

  • MYSET類能夠得到的所有項目,應用內部邏輯來他們基於XML的數據,並提供最終ItemsSet結果

我不知道哪一個更好。我知道,例如Spring推出更多以服務爲中心的方法,但最近有很多關於避免貧血模型的嗡嗡聲。

回答

1

這一切都取決於你的使用情況和粒度,因此要明確回答你的問題很難。增加模型可能是一件好事,但你不想沿着那個滑坡傾斜。

如果我高度耦合的意大利麪條代碼「富」模型和無聊貧血模型之間做出選擇,我不得不去貧血模型。但是使用還原ad absurdum這裏沒有解決任何問題,所以我們回到了我的原始觀點:這取決於您的使用案例。有時你想/需要模型有行爲。有時候你沒有。大多數時候你在中間的某個地方。

作爲開發人員和架構師,您需要了解多少行爲模型真正需要的作用。

我想補充一點,如果無論你的工作是分佈式的,我會建議對有狀態的模型 - 共享節點之間的狀態(避免死鎖和競爭條件)是平凡的。