我正在寻找一些最佳实践/模式来将对象从一个转换到另一个。我使用DAO从DB加载数据来创建域对象。在我的应用程序中,我需要转换成一个不同的对象,作为另一个模块的输入。例如,customer是保存订单列表的域对象。我需要将其转换为对象customerorder。
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对象列表的方法和一个实现该接口的具体类
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
发布于 2012-03-03 12:45:01
您需要让对象扩展或实现另一个对象,以便您可以将它们转换为不同类型的对象。我建议研究一下多态来做到这一点。这个名字听起来很可怕,但也没什么大不了的
发布于 2012-03-03 12:39:59
只需编写一个新的DAO,将数据从DB加载到正确的域对象中。
https://stackoverflow.com/questions/9543373
复制相似问题