Mẫu thiết kế để chuyển đổi đối tượng (java)


21

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ì?


Các mẫu là nhiều tên cho những gì bạn làm (và ví dụ làm thế nào để làm điều đó đúng), hơn là một cái gì đó tuyệt vời để sử dụng. Vì vậy, câu hỏi tốt hơn so với cách tôi có thể sử dụng nhiều mẫu hơn là: Những gì tôi đã sử dụng (có thể trong một số cách không hoàn chỉnh / phức tạp).
user470365

Câu trả lời:


18

Mẫu dịch là những gì bạn đang yêu cầu.

Nhưng tôi nghi ngờ những gì bạn đang tìm kiếm là một khung, hơn cả một mô hình. Tôi tin rằng Dozer rất phổ biến trong thế giới Java.


Tôi biết Dozer và Apache Beanutils. Tôi muốn sử dụng một trong những cấu trúc bên trong "cấu trúc chuyển đổi" của mình. Trong khi đó, tôi thấy rằng Spring cung cấp một giải pháp để chuyển đổi các đối tượng có thể tìm thấy ở đây: static.springsource.org/spring/docs/3.0.0.RC3/reference/html/ . Tôi đã nhìn thấy nó trước đây, nhưng một thời gian dài trước đây, vì vậy giao diện của riêng tôi dựa trên những gì tôi nhớ từ Spring. Tôi sẽ đi với giải pháp Mùa xuân, vì Mùa xuân đã có trong dự án của tôi và có vẻ như đó là một cách tiếp cận tốt.
Julius
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.