2012-10-25 12 views
11

असल में, मेरे पास मेरे आवेदन में कई ऑब्जेक्ट हैं और मुझे अनुरोध भेजने से पहले उन्हें किसी अन्य तृतीय पक्ष ऑब्जेक्ट में कनवर्ट करना होगा। प्रतिक्रिया प्राप्त करने पर मुझे इन ऑब्जेक्ट्स को मेरे एप्लिकेशन द्वारा समर्थित ऑब्जेक्ट्स में कनवर्ट करना होगा।एक मॉडल को दूसरे मॉडल में बदलने के लिए डिज़ाइन पैटर्न

जावा में एक मॉडल ऑब्जेक्ट को दूसरे में परिवर्तित करने के लिए मैं किस पैटर्न का उपयोग कर सकता हूं?

+1

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

उत्तर

3

या तो एडाप्टर या मुखौटा पैटर्न आपकी समस्या का समाधान करना चाहिए:

एडाप्टर: http://www.youtube.com/watch?v=TriX8OiEhOU

फसाड: http://www.youtube.com/watch?v=WLjvNpP6yeQ

+8

फेकाडे पैटर्न उसकी समस्या का समाधान क्यों करेगा? क्या वह पैटर्न ["कोड के बड़े निकाय को सरलीकृत इंटरफ़ेस प्रदान नहीं करता है]] (http://en.wikipedia.org/wiki/Facade_pattern)? मुझे नहीं लगता कि आपको मुखौटा में रूपांतरण तर्क डालना है। –

+0

एडाप्टर भी एक ओवरकिल है और केवल तभी उपयोग किया जाना चाहिए जब आपको नए मॉडल में प्रतिबिंबित करने के लिए बेस मॉडल में डेटा बदलने की आवश्यकता हो। एक कनवर्टर कक्षा जिम्मेदारियों को अलग करने में भी मदद करेगी। – danidacar

1

आप शायद एडाप्टर पैटर्न के लिए देखो: http://en.wikipedia.org/wiki/Adapter_pattern

+0

हाँ मैं कर सकते हैं, लेकिन मेरे मामले में मैं केवल दो साधारण POJO और कोई इंटरफेस नहीं है। परिवर्तन करने का कोई अन्य पैटर्न या बेहतर तरीका नहीं है। – ABose

+0

आप प्रॉक्सी पैटर्न पर एक नज़र डाल सकते हैं लेकिन वास्तव में यह आपकी प्राथमिकताओं और पर्यावरण पर निर्भर करता है। – SomeWittyUsername

7

मुझे नहीं लगता कि इस के लिए एक विशिष्ट पैटर्न वहाँ है, लेकिन आप बस एक "कनवर्टर" या "अनुवादक" वर्ग है कि एक वस्तु और रिटर्न में ले जाता है की जरूरत है एक और:

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

यह थोड़ा कठोर वस्तुओं के संदर्भ निर्धारित है, लेकिन असेंबलर पैटर्न पर एक नज़र लेने के लिए, हालांकि तकनीकी रूप से नहीं एक डिजाइन पैटर्न है। एक असेंबलर क्लास का उपयोग एक ऑब्जेक्ट से दूसरे ऑब्जेक्ट में मैप करने के लिए किया जाता है, खासकर जब एक ऑब्जेक्ट एक डोमेन ऑब्जेक्ट में एक डीटीओ (आपकी प्रतिक्रिया ऑब्जेक्ट की तरह) होता है। डोजर फ्रेमवर्क इन कठिन परिश्रमों में से कुछ के साथ आपकी मदद कर सकता है।

1

एडाप्टर और फेकाडे संरचनात्मक पैटर्न हैं। आपके पास ऑब्जेक्ट ट्रांसफ़ॉर्मेशन को पूरा करने के लिए कोई पैटर्न नहीं है।

क्रिएशनल पैटर्न फ्रंट पर, Builder एक ऐसा पैटर्न है जिसे आप सोच सकते हैं।

आम तौर पर बिल्डर पैटर्न अनिवार्य और वैकल्पिक पैरामीटर के साथ ऑब्जेक्ट बनाने के लिए उपयोग किया जाता है। लेकिन आप आवश्यक वस्तु के निर्माण से इसे ठीक कर सकते हैं।

आप पैटर्न के बिना भी समस्या को हल कर सकते हैं। या तो आप ऑब्जेक्ट संरचना या ऑब्जेक्ट को बदलने के लिए अपना स्वयं का तरीका लिखें।

कोड उदाहरण के साथ संबंधित एसई सवाल पर एक नज़र डालें:

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

संबंधित मुद्दे