所以我有一个很好定义的模式。支持它的数据存储将允许此请求。(MongoDB)。
假设我有一个User类:
class User
emailAddress
name如果我要合并来自另一个源的数据(比如一个映射/params,我可以正确地识别源)。我的目的是将未使用的属性放入用户类中的结构中。
例如:如果我从facebook导入一个用户,他们将在emailAddress或名称之外拥有各种属性。BUt,我还不知道如何处理这些问题。
我的问题是:如何设计域类,使其能够在创建对象时处理所有这些问题?(我愿意在其中放置一个跟踪器属性来表示源)[即添加源代码: Facebook]
输出类将查看,并按如下方式序列化:
从Facebook返回的信息将是: Jim,电子邮件: bo@jim.com,朋友:1000,级别:42。由此产生的类是:
class User
emailAddress : bo@jim.com
name: Jim
extraProperties: [Facebook, [friends:1000, level:42]]做这件事最好的方法是什么?它会破坏域类模型吗?扩张型的东西会在这里起作用吗?
发布于 2015-04-16 05:44:08
我认为设计域类的最好方法是将附加用户的属性(extraProperties)保存为序列化的“文档”类型对象。如果要将示例地图转换为JSON/GSON或XML (换流器),并将其保存到数据库中作为文档/大型nvarchar,则每个用户源具有不同属性的灵活性。
然后,您可以向域对象中添加自定义getter和setter,该对象将转换/ slurp文档,并将其表示为到控制器/服务的映射。
String extraProperties
def setExtraProperties(def properties){
this.extraProperties = (properties as JSON)?.toString()
}
def getExtraPropertiesMap() {
def jsonSlurper = new JsonSlurper()
def extraProps = jsonSlurper.parseText(this.extraProperties)
return extraProps //you can then access this using map syntax, eg. extraProps.Facebook.friends
}https://stackoverflow.com/questions/29665507
复制相似问题