मैं एक सामयिक कारखाने और एमवीसी के अलावा बहुत बार डिजाइन पैटर्न का उपयोग नहीं करता हूं, और मैं उन्हें और अधिक उपयोग करना शुरू करना चाहता हूं।
मेरे पास हाथ में एक ठोस मामला है जो मैं इस मामले में डिजाइन पैटर्न के उपयोग पर आपकी राय चाहूंगा।
मेरे आवेदन में मुझे विभिन्न परिस्थितियों में अक्सर वस्तुओं को परिवर्तित करना पड़ता है। मुझे एक 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.
}
}
तो, यहां असली सवाल यह है: क्या कोई ऐसा पैटर्न है जो जेनेरिक ऑब्जेक्ट रूपांतरण पर लागू होता है और, आपका दृष्टिकोण क्या होगा और केवल क्लास-प्रति-रूपांतरण प्रकार के दृष्टिकोण का उपयोग करने पर क्या फायदे हैं?