我正在寻找一些最佳实践/模式来将对象从一个转换为另一个。我使用DAO从数据库加载数据来创建我的域对象。在我的应用程序中,我需要转换为另一个对象,作为另一个模块的输入。 例如,客户是包含订单列表的域对象。我需要将其转换为对象客户端。
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类,但我的transdormations非常复杂,我想保持转换逻辑对于不同的对象是分开的。 最初我有一个变换器类,它只是循环遍历所有对象并创建转换对象,但我不认为这是一个很好的设计和想到这个DTO。但我相信有更好的方法可以做到。
此外,我需要能够在多个对象上使用DTO模式。在这个客户只是一个这样的对象?我有20个像不同的对象,我需要转换成他们各自的变换对象。
对最佳实践和模式的任何想法都非常有用。还有我可以用来更好地扩展它们的任何泛型。
由于 Javid
答案 0 :(得分:0)
只需编写一个新的DAO,将数据从DB加载到正确的域对象中。
答案 1 :(得分:0)
您需要让对象扩展或实现另一个对象,以便您可以将它们转换为不同类型的对象。我建议研究多态性来做到这一点。这个名字听起来很吓人,但没什么大不了的。