इसलिए मेरे पास एक कारखाना है जो विभिन्न वर्गों की वस्तुओं का निर्माण करता है। संभावित कक्षाएं एक अमूर्त पूर्वज से ली गई हैं। फ़ैक्टरी में एक कॉन्फ़िगरेशन फ़ाइल (JSON सिंटैक्स) है और यह तय करता है कि उपयोगकर्ता के कॉन्फ़िगरेशन के आधार पर किस वर्ग को बनाना है।
इसे प्राप्त करने के लिए, कारखाना JSON- पार्सिंग के लिए बढ़ावा :: property_tree का उपयोग करता है। वह ptree के माध्यम से चलता है और यह तय करता है कि किस ठोस वस्तु को बनाना है।
हालाँकि, उत्पाद-ऑब्जेक्ट में कई फ़ील्ड (विशेषताएँ) हैं। कंक्रीट वर्ग के आधार पर, वस्तु में लगभग 5-10 विशेषताएं हैं, भविष्य में शायद और भी अधिक।
इसलिए मुझे यकीन नहीं है कि वस्तुओं के निर्माता को कैसा दिखना चाहिए। मैं दो समाधानों के बारे में सोच सकता हूं:
1) उत्पाद का निर्माता एक पैरामीटर के रूप में हर विशेषता की उम्मीद करता है, इस प्रकार, निर्माणकर्ता 10+ मापदंडों के साथ समाप्त हो जाएगा। यह बदसूरत होगा और लंबी, अपठनीय कोड लाइनों का नेतृत्व करेगा। हालांकि, लाभ यह है कि कारखाना JSON को पार्स कर सकता है और सही मापदंडों के साथ कंस्ट्रक्टर को आमंत्रित कर सकता है। उत्पाद वर्ग को यह जानने की आवश्यकता नहीं है कि यह JSON कॉन्फ़िगरेशन के कारण बनाया गया है। यह जानने की आवश्यकता नहीं है कि JSON या कॉन्फ़िगरेशन बिल्कुल शामिल है।
2) उत्पाद का निर्माता केवल एक तर्क की उम्मीद करता है, संपत्ति_ट्री ऑब्जेक्ट। तब यह आवश्यक जानकारी को पार्स कर सकता है। यदि कॉन्फ़िगरेशन में जानकारी अनुपलब्ध है या सीमा से बाहर है, तो प्रत्येक उत्पाद वर्ग ठीक से प्रतिक्रिया कर सकता है। कारखाने को यह जानने की आवश्यकता नहीं है कि कई उत्पादों द्वारा क्या तर्क दिए गए हैं। गलत कॉन्फ़िगरेशन की स्थिति में प्रतिक्रिया करने के लिए कारखाने को यह जानने की आवश्यकता नहीं है। और कंस्ट्रक्टर इंटरफ़ेस एकीकृत और छोटा है। लेकिन, एक नुकसान के रूप में, उत्पाद को JSON से आवश्यक जानकारी निकालने की आवश्यकता है, इस प्रकार, यह जानता है कि इसका निर्माण कैसे किया जाता है।
मैं समाधान 2 को प्राथमिकता देता हूं)। हालांकि, मुझे यकीन नहीं है कि यह अच्छा कारखाना पैटर्न है। यह किसी भी तरह गलत लगता है कि उत्पाद को पता है कि यह JSON कॉन्फ़िगरेशन के साथ बनाया गया है। दूसरी तरफ, नए उत्पादों को बहुत सरल रूप में पेश किया जा सकता है।
उस पर कोई राय?