我正在尋找一些最佳實踐/模式來將對象從一個轉換爲另一個。我使用DAO從數據庫加載數據來創建我的域對象。在我的應用程序中,我需要轉換成一個不同的對象,作爲另一個模塊的輸入。 例如,客戶是包含訂單列表的域對象。我需要將其轉換爲對象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
}
目前,我有其中有一個方法返回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
}
}
對於簡單的一個具體類的接口CustomerDTO,轉換我並不需要一個DTO類但我的轉換非常複雜,我希望爲不同的對象保留轉換邏輯。 最初我有一個轉換器類,它只是遍歷所有對象並創建轉換對象,但我不認爲這是一個很好的設計和思考這個DTO。但我相信有更好的方法來做到這一點。
此外,我需要能夠在幾個對象上使用DTO模式。在這個客戶中只是一個這樣的對象?我有20個不同的對象,我需要將它們轉換爲各自的轉換對象。
任何有關最佳實踐和模式的想法都會非常有用。還有我可以用來更好地擴展它們的任何泛型。
感謝 Javid
讓我直截了當地說,你需要一種設計模式來幫助你處理這樣一個事實,即你試圖解決數據模型設計不好的事實你試圖實現的用例?我猜你對此感到困惑,只是讓它工作而已?這。這就是爲什麼我不再承擔大型企業Java項目的原因。 我建議重構體系結構,這樣可以使數據對象實現其他模塊所需的任何接口。如果這不起作用,請查看適配器模式。 –
2012-03-03 04:19:01
@BenTaitelbaum我同意一部分。這不是數據模型沒有完美設計,而是變革相當複雜,例如。通過不更改我的數據模型以反映最終轉換對象,我可以支持未來的轉換邏輯更改而不更改我的DAO或域模型。我將研究適配器模式。看起來像我的DTOImpl類可能已經在做這件事。謝謝。 – user320587 2012-03-03 14:12:46