首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >变换对象的模式

变换对象的模式
EN

Stack Overflow用户
提问于 2012-03-03 12:11:43
回答 2查看 3.2K关注 0票数 2

我正在寻找一些最佳实践/模式来将对象从一个转换到另一个。我使用DAO从DB加载数据来创建域对象。在我的应用程序中,我需要转换成一个不同的对象,作为另一个模块的输入。例如,customer是保存订单列表的域对象。我需要将其转换为对象customerorder。

代码语言:javascript
复制
Public class Customer {
   String customerid
   List<Order> orders
}

Public class Order {
   Integer id
   Date orderDate
}

/** Transformed objects **/
public class CustomerOrder {
   string customerid
   Integer orderid
}

目前,我有一个接口CustomerDTO,它有一个返回CustomerOrder对象列表的方法和一个实现该接口的具体类

代码语言:javascript
复制
Public interface CustomerDTO {
   List<CustomerOrder> getData(Date date)
}

Public class CustomerDTOImpl implements CustomerDTO {
   Private Customer customer
   Public CustomerDTOImpl(Customer customer) {
      this.customer = customer
   }

   Public List<CustomerOrder> getData(Date date) {
       ..... Code to loop through orders and create and return a list with matching order dates
   }
}

对于简单的转换,我不需要DTO类,但我的转换非常复杂,我希望为不同的对象保持转换逻辑的分离。最初,我有一个transformer类,它只是循环所有对象并创建转换后的对象,但我不认为这是一个好的设计和这个DTO。但我相信还有更好的方法。

另外,我需要能够在几个对象上使用DTO模式。在这个客户中只有一个这样的对象?我有20个类似的不同对象,我需要将它们转换为各自的转换对象。

任何关于最佳实践和模式的想法都会非常有用。另外,还有什么泛型可以用来更好地扩展它们。

谢谢Javid

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-03 12:45:01

您需要让对象扩展或实现另一个对象,以便您可以将它们转换为不同类型的对象。我建议研究一下多态来做到这一点。这个名字听起来很可怕,但也没什么大不了的

票数 0
EN

Stack Overflow用户

发布于 2012-03-03 12:39:59

只需编写一个新的DAO,将数据从DB加载到正确的域对象中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9543373

复制
相关文章

相似问题

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