首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用一些智能创建域类

使用一些智能创建域类
EN

Stack Overflow用户
提问于 2015-04-16 04:45:11
回答 1查看 40关注 0票数 1

所以我有一个很好定义的模式。支持它的数据存储将允许此请求。(MongoDB)。

假设我有一个User类:

代码语言:javascript
复制
class User
  emailAddress
  name

如果我要合并来自另一个源的数据(比如一个映射/params,我可以正确地识别源)。我的目的是将未使用的属性放入用户类中的结构中。

例如:如果我从facebook导入一个用户,他们将在emailAddress或名称之外拥有各种属性。BUt,我还不知道如何处理这些问题。

我的问题是:如何设计域类,使其能够在创建对象时处理所有这些问题?(我愿意在其中放置一个跟踪器属性来表示源)[即添加源代码: Facebook]

输出类将查看,并按如下方式序列化:

从Facebook返回的信息将是: Jim,电子邮件: bo@jim.com,朋友:1000,级别:42。由此产生的类是:

代码语言:javascript
复制
class User
   emailAddress : bo@jim.com
   name: Jim
   extraProperties: [Facebook, [friends:1000, level:42]]

做这件事最好的方法是什么?它会破坏域类模型吗?扩张型的东西会在这里起作用吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-16 05:44:08

我认为设计域类的最好方法是将附加用户的属性(extraProperties)保存为序列化的“文档”类型对象。如果要将示例地图转换为JSON/GSON或XML (换流器),并将其保存到数据库中作为文档/大型nvarchar,则每个用户源具有不同属性的灵活性。

然后,您可以向域对象中添加自定义getter和setter,该对象将转换/ slurp文档,并将其表示为到控制器/服务的映射。

代码语言:javascript
复制
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
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29665507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档