转换对象的模式

时间:2012-03-03 04:11:43

标签: java design-patterns transformation

我正在寻找一些最佳实践/模式来将对象从一个转换为另一个。我使用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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

相关问题