ऑब्जेक्ट रूपांतरण के लिए डिज़ाइन पैटर्न (जावा)


21

मैं एक सामयिक कारखाने और एमवीसी के अलावा बहुत बार डिजाइन पैटर्न का उपयोग नहीं करता हूं, और मैं उन्हें और अधिक उपयोग करना शुरू करना चाहता हूं।

मेरे पास हाथ में एक ठोस मामला है जो मैं इस मामले में डिजाइन पैटर्न के उपयोग पर आपकी राय चाहूंगा।

मेरे आवेदन में मुझे विभिन्न परिस्थितियों में अक्सर वस्तुओं को परिवर्तित करना पड़ता है। मुझे एक Hibernate POJO को DTO में बदलना पड़ सकता है, क्योंकि मैं GWT और Hibernate POJO का उपयोग नहीं कर रहा हूं, यह सीरियल करने योग्य नहीं है और इसे लाइन पर नहीं भेजा जा सकता है।

एक और स्थिति में मुझे SolrInputDocument के लिए Java ऑब्जेक्ट को Solr द्वारा अनुक्रमण के लिए परिवर्तित करने की आवश्यकता हो सकती है।

मैं जानना चाहूंगा कि क्या मुझे इसके लिए एक डिज़ाइन पैटर्न का उपयोग करना चाहिए। ऐसा लगता है कि "ऑब्जेक्ट रूपांतरण" एक सामान्य कार्य है जिसे एक पैटर्न द्वारा लचीले / सार तरीके से संभाला जा सकता है, लेकिन मैं वास्तव में नहीं देखता कि कैसे।

पैटर्न के बिना मैं सिर्फ प्रत्येक प्रकार के रूपांतरण के लिए एक अलग वर्ग बनाऊंगा, उदाहरण के लिए कोर्सटॉससोलरूटपुटडिमेन्मेंट (पाठ्यक्रम मेरे आवेदन में एक हाइबरनेट इकाई है)। या CourseToCourseDTO। इन रूपांतरण कक्षाओं में से प्रत्येक में एक एकल स्थिर विधि हो सकती है, जिसे convert()स्रोत वस्तु को इनपुट के रूप में लिया जाता है और आउटपुट ऑब्जेक्ट को लौटाता है।

लेकिन यह वास्तव में एक पैटर्न नहीं है, क्या यह है? इसलिए मैंने जेनेरिक के साथ कुछ पर शुरू किया और इस वर्ग को बनाया जो कनवर्टर इंटरफ़ेस को लागू करता है। लेकिन किसी तरह लगता है कि मूर्खतापूर्ण अहंकार एक सामान्य इंटरफ़ेस बनाता है और मैं वास्तव में जेनरिक के उपयोग पर खुद को बधाई देने में सक्षम होने के अलावा अन्य लाभ नहीं देखता हूं।

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.
    }
}

तो, यहां असली सवाल यह है: क्या कोई ऐसा पैटर्न है जो जेनेरिक ऑब्जेक्ट रूपांतरण पर लागू होता है और, आपका दृष्टिकोण क्या होगा और केवल क्लास-प्रति-रूपांतरण प्रकार के दृष्टिकोण का उपयोग करने पर क्या फायदे हैं?


पैटर्न आप क्या करते हैं (और उदाहरण के लिए इसे ठीक से कैसे करना है) के लिए अधिक नाम हैं, उपयोग करने के लिए कुछ अधिक से अधिक। इतना बेहतर सवाल कि मैं और अधिक पैटर्न का उपयोग कैसे कर सकता हूं: क्या पेटेंट मैं पहले से ही उपयोग कर रहा हूं (शायद कुछ अधूरा / जटिल तरीके से)।
user470365

जवाबों:


18

अनुवादक पैटर्न आप जो चाह रहे हैं है।

लेकिन मुझे संदेह है कि आप जो खोज रहे हैं वह एक रूपरेखा है, एक पैटर्न से अधिक। मेरा मानना ​​है कि डोज़र जावा दुनिया में लोकप्रिय है।


मैं डोजर और अपाचे बर्नुतिल्स को जानता हूं। मैं अपनी "रूपांतरण संरचना" के अंदर उन में से एक का उपयोग करना चाहूंगा। इस बीच मैंने पाया कि स्प्रिंग उन वस्तुओं को परिवर्तित करने के लिए एक समाधान प्रदान करता है जो यहां मिल सकती हैं: static.springsource.org/spring/docs/3.0.0.RC3/reference/html/… । मैंने इसे पहले भी देखा था, लेकिन बहुत समय पहले, इसलिए मेरा अपना इंटरफ़ेस उस तरह से आधारित था जो मुझे वसंत से याद था। मैं स्प्रिंग समाधान के साथ जाने वाला हूं, क्योंकि स्प्रिंग पहले से ही मेरी परियोजना में है और यह एक अच्छा दृष्टिकोण है।
जूलियस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.