当前位置: 首页 > 面试题库 >

为什么将“Anemic domain model”视为反模式的具体示例

苏坚成
2023-03-14
问题内容

抱歉,如果这是重复的,则无法在相关问题中找到关于该主题的任何具体示例

在阅读了马丁·福勒(Martin
Fowler)关于“Anemic domain model”的文章
之后,我一直在徘徊,为什么这被认为是一种反模式。甚至大多数企业开发人员都将其视为反模式,因为AFAIK大概90%的j2ee应用程序都是以“贫乏”方式设计的?

有人可以建议进一步阅读该主题(不是“域驱动设计”书),或者甚至更好地给出具体示例,说明这种反模式如何以不良方式影响应用程序设计。

谢谢,


问题答案:

给定以下两类:

class CalculatorBean  
{  
    //getters and setters  
}

class CalculatorBeanService  
{  
   Number calculate(Number first, Number second);  
    {  
       //do calculation  
    }  
}

如果我理解正确,Fowler表示,由于您CalculatorBean只是一堆getter /
setter,您不会从中获得任何实际价值,并且如果将该对象移植到另一个系统上,则将无济于事。问题似乎是您CalculatorBeanService包含CalculatorBean应该负责的所有内容。这不是最好的做法,因为现在CalculatorBean将所有责任都委托给了CalculatorBeanService



 类似资料:
  • 我正在寻找另一个问题的答案,我找到了这个答案(链接)我只是好奇为什么修改自己的道具是反模式的,为什么修改自己的状态不是反模式的?

  • 问题内容: 我已经在SocketIO的帮助下创建了一个小的ReactJS仪表板,用于实时更新。即使我更新了仪表板,也仍然使我感到不确定我是否正确执行了操作。 最让我感到困扰的是getInitialState中的Props作为反模式发布。我创建了一个仪表板,该仪表板从服务器获取实时更新,除了加载页面外,不需要用户交互。根据我的阅读,应该包含一些内容,这些内容将确定是否应重新渲染该组件,以及....我

  • OpenAPI 3.0.0,Swagger在线编辑器。 我通过< code>allOf鉴别器编写了子模式,并为结果模式设置了< code>example字段。然而,Swagger UI并没有按原样提供这个例子。 该模式包含一个源自子模式的数组。数组从子模式继承了示例项,并使用模式中的示例扩展了列表。 假设我们有两个模式: 响应某些请求,API检索fluffiest猫,引用<code>#/compo

  • 问题内容: 有时我需要在代码中使用它,有时它会引发“已消化的摘要”错误。但是,您可以在评论中(以及在Angular Wiki上)阅读: 如果(!$ scope。$$ phase)$ scope。$ apply()不要这样做,这意味着您的$ scope。$ apply()在调用堆栈中不够高。 所以现在我有两个问题: 为什么这是反模式? 我如何安全地使用$ scope。$ apply? 另一个防止“已

  • 有时我需要在代码中使用,有时它会引发“摘要已经在进行中”错误。因此,我开始寻找解决这个问题的方法,并发现这个问题:AngularJS:prevention error$digest在调用$scope.$apply()时已经在进行。然而,在评论中(以及有棱角的wiki上),您可以读到: 如果(!$scope.$$phase)$scope.$apply(),则不要这样做,这意味着您的$scope.$a

  • 问题内容: 有一个很大的材料了有这表明印刷异常的堆栈跟踪是不好的做法。 例如从Checkexp中的RegexpSingleline检查: 可以使用此检查来查找常见的不良做法,例如调用ex.printStacktrace() 但是,我正在努力寻找能够给出正当理由的任何地方,因为肯定可以使堆栈跟踪对于跟踪导致异常的原因非常有用。我知道的事情: 最终用户永远不应看到堆栈跟踪(出于用户体验和安全目的) 生