Java 无状态以服务为中心的方法与有状态富模型
假设我已经定义了一组项。这些项目必须分组到不同的集合中。例如,项目可以是Java 无状态以服务为中心的方法与有状态富模型,java,oop,anemic-domain-model,Java,Oop,Anemic Domain Model,假设我已经定义了一组项。这些项目必须分组到不同的集合中。例如,项目可以是 public Item { public int id; public String name; } 集合有自己的设置,比如哪些项目属于这个集合,集合的名称是什么等等。现在所有的东西都存储在xml结构中 我的第一个想法是写以下元素: xml解析器获取集合的数据并将其转换为MySet pojo xml解析器获取所有项并转换为项POJO列表 无状态服务,如类say ItemsSetCreator计算最终It
public Item {
public int id;
public String name;
}
集合有自己的设置,比如哪些项目属于这个集合,集合的名称是什么等等。现在所有的东西都存储在xml结构中
我的第一个想法是写以下元素:
- xml解析器获取集合的数据并将其转换为MySet pojo
- xml解析器获取所有项并转换为项POJO列表
- 无状态服务,如类say ItemsSetCreator计算最终ItemsSet对象,该对象包含基于MySet的集合定义和项目列表,如
class ItemsSetCreator { public ItemsSet createItemsSet(List<Item> items, MySet set) { // ... } }
类项目创建器{ 公共项集createItemsSet(列表项,MySet集){ // ... } }
- MySet类能够获取所有项目,基于xml数据对其应用内部逻辑,并提供最终的项目集
- 等等
我不知道哪一个更好。我知道Spring提倡更多以服务为中心的方法,但最近有很多关于避免贫血模型的讨论。这一切都取决于您的用例和粒度,因此很难明确回答您的问题。丰富模型可能是一件好事,但你也不想走下坡路 如果我要在高度耦合的意大利面代码“丰富”模型和乏味的贫血模型之间进行选择,我将不得不选择贫血模型。但是在这里使用简化和荒谬并不能解决任何问题,所以我们回到我的原始观点:这取决于您的用例。有时,您希望/需要模型具有行为。有时候你不会。大多数时候你在中间的某个地方。 作为开发人员和架构师,您的工作是找出行为模型真正需要多少
我想补充一点,如果您正在研究的是分布式的,我建议不要使用有状态的模型——在节点之间共享状态(避免死锁和竞争条件)是非常重要的。这一切都取决于您的用例和粒度,因此很难明确回答您的问题。丰富模型可能是一件好事,但你也不想走下坡路 如果我要在高度耦合的意大利面代码“丰富”模型和乏味的贫血模型之间进行选择,我将不得不选择贫血模型。但是在这里使用简化和荒谬并不能解决任何问题,所以我们回到我的原始观点:这取决于您的用例。有时,您希望/需要模型具有行为。有时候你不会。大多数时候你在中间的某个地方。 作为开发人员和架构师,您的工作是找出行为模型真正需要多少 我想补充一点,如果您正在研究的是分布式的,我建议不要使用有状态模型——在节点之间共享状态(避免死锁和竞争条件)是不重要的