Tôi không sử dụng các mẫu thiết kế rất thường xuyên, bên cạnh một nhà máy và MVC thường xuyên, và tôi muốn bắt đầu sử dụng chúng nhiều hơn.
Tôi có một trường hợp cụ thể trong tay mà tôi muốn ý kiến của bạn về việc sử dụng các mẫu thiết kế trong trường hợp này.
Trong ứng dụng của mình, tôi phải chuyển đổi các đối tượng khá thường xuyên trong các tình huống khác nhau. Tôi có thể phải chuyển đổi POJO Hibernate thành DTO, vì tôi sử dụng không phải là tuần tự hóa của GWT và Hibernate POJO và không thể gửi qua đường dây.
Trong một tình huống khác, tôi có thể cần phải chuyển đổi các đối tượng Java thành SolrInputDocument để lập chỉ mục bởi Solr.
Tôi muốn biết nếu tôi nên sử dụng một mẫu thiết kế cho việc này. Có vẻ như "chuyển đổi đối tượng" là một nhiệm vụ chung có thể được xử lý theo cách linh hoạt / trừu tượng theo một mẫu, nhưng tôi thực sự không thấy cách nào.
Nếu không có các mẫu, tôi sẽ chỉ tạo một lớp riêng cho từng loại chuyển đổi, ví dụ CourseToSolrInputDocument (Khóa học là một thực thể Hibernate trong ứng dụng của tôi). Hoặc CourseToC thảoDTO. Mỗi lớp chuyển đổi này có thể có một phương thức tĩnh được gọi là convert()
lấy đối tượng nguồn làm đầu vào và trả về đối tượng đầu ra.
Nhưng đó không thực sự là một mô hình, phải không? Vì vậy, tôi bắt đầu một cái gì đó với generic và tạo ra lớp này thực hiện giao diện Converter. Nhưng bằng cách nào đó cảm thấy tgo ngớ ngẩn tạo ra một giao diện chung và tôi thực sự không thấy lợi thế nào ngoài việc có thể tự chúc mừng bản thân về việc sử dụng thuốc generic.
public class CourseToSolrInputDocument implements Converter<Course, SolrInputDocument> {
@Override
public void convert(Course source, SolrInputDocument destination) {
//To change body of implemented methods use File | Settings | File Templates.
}
}
Vì vậy, câu hỏi thực sự ở đây là: có một mô hình áp dụng cho chuyển đổi đối tượng chung và, cách tiếp cận của bạn sẽ là gì và những lợi thế của việc sử dụng chỉ là cách tiếp cận loại chuyển đổi lớp là gì?