2012-02-20 80 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这里没有解决任何问题,所以我们回到了我的原始观点:这取决于您的使用案例。有时你想/需要模型有行为。有时候你没有。大多数时候你在中间的某个地方。

作为开发人员和架构师,您需要了解多少行为模型真正需要的作用。

我想补充一点,如果无论你的工作是分布式的,我会建议对有状态的模型 - 共享节点之间的状态(避免死锁和竞争条件)是平凡的。