Я ищу несколько лучших практик / шаблонов для преобразования объектов из одного в другой. Я загружаю данные из БД, используя 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, но мои преобразования очень сложны, и я хотел бы разделить логику преобразования для разных объектов.
Изначально у меня был класс преобразователя, который просто перебирает все объекты и создает преобразованные объекты, но я не думаю, что это был хороший дизайн и мысль об этом DTO. Но я верю, что есть лучшие способы сделать это.
Также мне нужно иметь возможность использовать шаблон DTO для нескольких объектов. У этого Заказчика был только один такой объект? У меня есть 20 похожих объектов, которые нужно преобразовать в соответствующие им преобразованные объекты.
Любые мысли о лучших практиках и шаблонах были бы очень полезны. Также есть ли какие-либо генерики, которые я мог бы использовать, чтобы лучше масштабировать их.
Спасибо
Джавид