हेरेस की एक छोटी सी अतिरिक्त जानकारी है जो कुछ अन्य तकनीकी रूप से सही, लेकिन छोटे उत्तरों को बेहतर ढंग से समझने में मदद कर सकती है।
सख्ती से एक वर्ग फैक्ट्री एक कार्य या विधि है जो एक वर्ग बनाता है या चयन करता है और इसे इनपुट पैरामीटर या वैश्विक संदर्भ से निर्धारित कुछ शर्त के आधार पर देता है। यह आवश्यक है जब टाइप ऑब्जेक्ट की टाइप रनटाइम तक निर्धारित नहीं किया जा सकता है। कार्यान्वयन सीधे किया जा सकता है जब कक्षाएं इस्तेमाल होने वाली भाषा में पाइथन जैसी वस्तुएं होती हैं।
चूंकि किसी भी वर्ग का प्राथमिक उपयोग स्वयं के उदाहरण बनाना है, सी ++ जैसी भाषाओं में जहां कक्षाएं ऐसी वस्तुएं नहीं हैं जिन्हें चारों ओर पारित किया जा सकता है और छेड़छाड़ की जा सकती है, वही परिणाम अक्सर "वर्चुअल कंस्ट्रक्टर" को अनुकरण करके हासिल किया जा सकता है, जहां आप बेस-क्लास कन्स्ट्रक्टर को कॉल करते हैं लेकिन कुछ व्युत्पन्न कक्षा का उदाहरण वापस लेते हैं।यह अनुकरण किया जाना चाहिए क्योंकि कन्स्ट्रक्टर वास्तव में virtual✶ सी ++ में नहीं हो सकता है, यही कारण है कि इस तरह की वस्तु-वर्ग-कारखानों को आम तौर पर स्टैंडअलोन फ़ंक्शंस या स्थैतिक तरीकों के रूप में लागू नहीं किया जाता है।
✶ आभासी कार्यों सामान्य रूप से वस्तु के वास्तविक प्रकार संदर्भित द्वारा हल कर रहे हैं "late", लेकिन निर्माताओं के मामले में, वस्तु अभी तक अस्तित्व में नहीं है, इसलिए प्रकार किसी और तरीके से निर्धारित किया जाना चाहिए।
सर्वोत्तम कार्यान्वयन वे हैं जो नए उम्मीदवार वर्गों को स्वचालित रूप से संभालते हैं, जब वे वर्तमान में फैक्ट्री में हार्डकोड किए गए केवल एक निश्चित सीमित सेट के बजाय जोड़े जाते हैं (हालांकि व्यापार-बंद अक्सर स्वीकार्य होता है यदि फैक्ट्री एकमात्र जगह है संशोधन)।
जेम्स कोप्लिएन की 1 99 1 की किताब Advanced C++: Programming Styles and Idioms में सी ++ में ऐसे वर्चुअल जेनेरिक कन्स्ट्रक्टर को लागू करने के एक तरीके पर विवरण है। C++ templates का उपयोग करके ऐसा करने के बेहतर तरीके भी हैं, लेकिन यह उस पुस्तक में शामिल नहीं था जो मानक भाषा परिभाषा में उनके जोड़े जाने का अनुमान लगाता है। वास्तव में, सी ++ टेम्पलेट्स स्वयं वर्ग कारखानों हैं क्योंकि जब भी वे विभिन्न वास्तविक प्रकार के तर्कों के साथ उपयोग किए जाते हैं तो वे एक नई कक्षा को तत्काल बनाते हैं। अपडेट: मैंने 1 99 8 के पेपर में लिखा है जिसे उन्होंने यूरोपीओपीपी के लिए C++ Idioms शीर्षक दिया था, जहां अन्य चीजों के साथ, वह अपनी पुस्तक में मुहावरे को संशोधित और पुन: समूहित करता है, जिसे डिजाइन-पैटर्न फॉर्म ए ला 1 99 4 Design Patterns: Elements of Re-Usable Object-Oriented Software पुस्तक में बदल दिया गया है। नोट विशेष रूप से Virtual Constructor अनुभाग (जो उसकी Envelope/Letter पैटर्न संरचना का उपयोग करता है)।
प्रश्न Class factory in Python के लिए यहां संबंधित उत्तरों को भी देखें। Abstract Factory, Template Style भी देखें जो 2001 डॉ डॉबब का लेख है जिसे सी ++ टेम्पलेट्स के साथ लागू करने के बारे में भी है।