Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无状态以服务为中心的方法与有状态富模型_Java_Oop_Anemic Domain Model - Fatal编程技术网

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集){
    // ...
    }
    }
    
但另一种方法是稍微丰富一下模型,然后编写sht,如:

  • MySet类能够获取所有项目,基于xml数据对其应用内部逻辑,并提供最终的项目集

  • 等等


我不知道哪一个更好。我知道Spring提倡更多以服务为中心的方法,但最近有很多关于避免贫血模型的讨论。

这一切都取决于您的用例和粒度,因此很难明确回答您的问题。丰富模型可能是一件好事,但你也不想走下坡路

如果我要在高度耦合的意大利面代码“丰富”模型和乏味的贫血模型之间进行选择,我将不得不选择贫血模型。但是在这里使用简化和荒谬并不能解决任何问题,所以我们回到我的原始观点:这取决于您的用例。有时,您希望/需要模型具有行为。有时候你不会。大多数时候你在中间的某个地方。

作为开发人员和架构师,您的工作是找出行为模型真正需要多少


我想补充一点,如果您正在研究的是分布式的,我建议不要使用有状态的模型——在节点之间共享状态(避免死锁和竞争条件)是非常重要的。

这一切都取决于您的用例和粒度,因此很难明确回答您的问题。丰富模型可能是一件好事,但你也不想走下坡路

如果我要在高度耦合的意大利面代码“丰富”模型和乏味的贫血模型之间进行选择,我将不得不选择贫血模型。但是在这里使用简化和荒谬并不能解决任何问题,所以我们回到我的原始观点:这取决于您的用例。有时,您希望/需要模型具有行为。有时候你不会。大多数时候你在中间的某个地方。

作为开发人员和架构师,您的工作是找出行为模型真正需要多少

我想补充一点,如果您正在研究的是分布式的,我建议不要使用有状态模型——在节点之间共享状态(避免死锁和竞争条件)是不重要的