2012-10-25 49 views
11

Về cơ bản, tôi có một số đối tượng trong ứng dụng của mình và tôi phải chuyển đổi chúng sang đối tượng bên thứ ba khác trước khi gửi yêu cầu. Khi nhận được phản hồi, tôi phải chuyển đổi các đối tượng này trở lại các đối tượng được ứng dụng của tôi hỗ trợ.Mẫu thiết kế để chuyển đổi một mô hình thành mô hình khác

Tôi có thể sử dụng mẫu nào để chuyển đổi một đối tượng mô hình sang đối tượng khác trong Java?

+1

http://stackoverflow.com/questions/1236667/object-conversion-pattern –

Trả lời

3

hoặc Adaptor hoặc mẫu mặt tiền nên giải quyết vấn đề của bạn:

Adaptor: http://www.youtube.com/watch?v=TriX8OiEhOU

Facade: http://www.youtube.com/watch?v=WLjvNpP6yeQ

+8

Tại sao mẫu Mặt tiền lại giải quyết được vấn đề của anh? Đó không phải là mô hình được sử dụng để ["cung cấp một giao diện đơn giản cho một cơ thể lớn hơn của mã"] (http://en.wikipedia.org/wiki/Facade_pattern)? Tôi không nghĩ rằng bạn có nghĩa vụ phải đặt logic chuyển đổi ở mặt tiền. Bộ chuyển đổi –

+0

cũng là quá mức cần thiết và chỉ nên sử dụng nếu bạn cần thay đổi dữ liệu trong mô hình cơ sở để phản ánh trong mô hình mới. Một lớp chuyển đổi cũng sẽ giúp phân chia trách nhiệm. – danidacar

1

Bạn có thể tìm kiếm các Adapter Pattern: http://en.wikipedia.org/wiki/Adapter_pattern

+0

Có, tôi có thể, nhưng trong trường hợp của tôi, tôi chỉ có hai POJO đơn giản và không có giao diện. Không có mô hình nào khác hay cách tốt hơn để thực hiện chuyển đổi. – ABose

+0

Bạn có thể xem mẫu proxy nhưng thực sự nó phụ thuộc vào sở thích và môi trường của bạn. – SomeWittyUsername

7

Tôi không nghĩ rằng có một mô hình cụ thể cho điều này, nhưng bạn chỉ cần một "chuyển đổi" hoặc lớp "dịch" mà mất trong một đối tượng và trả về khác:

MyObject convert(ThirdPartyObject obj); 
ThirdPartyObject convert(MyObject obj); 
1

Đó là một chút khó khăn để xác định bối cảnh của đối tượng, nhưng hãy nhìn vào mô hình Assembler, mặc dù không phải về mặt kỹ thuật một mẫu thiết kế. Một lớp Assembler được sử dụng để ánh xạ từ một đối tượng này sang một đối tượng khác, đặc biệt khi một đối tượng là một DTO (giống như đối tượng phản hồi của bạn) cho một đối tượng Miền. Khung công tác Dozer có thể giúp bạn với một số biến đổi tẻ nhạt này.

1

Bộ chuyển đổiMặt tiền là các mẫu kết cấu. Bạn không có bất kỳ mẫu nào để phục vụ cho Chuyển đổi đối tượng.

Trên mặt trước kiểu mẫu, Builder là một mẫu mà bạn có thể nghĩ đến.

Nói chung Builder mẫu được sử dụng để tạo đối tượng có tham số bắt buộc và tùy chọn. Nhưng bạn có thể tinh chỉnh nó bằng cách xây dựng đối tượng cần thiết.

Bạn cũng có thể giải quyết vấn đề mà không cần mẫu. Hoặc bạn có thể sử dụng Thành phần đối tượng hoặc Viết phương pháp của riêng bạn để biến đổi đối tượng.

Có xem xét liên quan câu hỏi SE với mã ví dụ:

How to prune an object of some of its fields in Java?

Các vấn đề liên quan