我们正在groovy中构建一个微服务REST api,作为更复杂的应用程序的一部分。这项服务只是一个简单的CRUD操作。
我们正在使用groovy并且在GET上我们需要从数据库(mongodb)中提取记录,并在更改某些字段的格式后返回对象(为了向后兼容),这些内容如下:
def object = collection.findOne(query)
object.field3 = object.field2.collect { [..]}
return object
我在groovy或java方面不是很有经验(我在ruby / python / clojure上工作得更广泛),但我通常会有一个域对象:
class Foo {
String _id
String field1
Array field2
Map toMap() {
[field1: field1, field3: field2.collect {}, field2: field2]
}
}
然后去
foo = new Foo(objectMapFromDb)
foo.toMap()
我通过使用这种方法看到的一些好处是我可以查看域对象并了解数据库中对象的结构是什么,如果我想要的话,我可以获得某种类型的安全性但更重要的是(以及推动我的决定的是)转换地图的代码封装在一个函数中,可以很容易地在项目的其他部分重用
一位更高级的开发人员质疑这种提及YAGNI的方法,并指出域对象过于复杂,并且恢复为仅更改如上所述的更改地图。
我有点困惑,我试图四处寻找有关避免域对象的信息,但我找不到类似的东西(我已经看过贫血域模型了,但这似乎把它带到了极端)。关于yagni我不觉得它适用于这种情况。
我个人并没有看到任何可怕的错误,因为一个简单的应用程序似乎是一个很好的解决方案,但这种方法的新颖性真的激发了我的好奇心。
有什么想法吗?我错过了什么吗? 感谢