मेरे पास एक कंटेनर है जिसमें बेस क्लास के पॉइंटर्स का एक गुच्छा है, और एक फ़ंक्शन जो कुछ इनपुट लेता है और बेस क्लास का उप-वर्ग है जो कक्षा देता है। यह कौन सा सबक्लास लौटाता है इनपुट पर निर्भर करता है।रचनाकारों के लिए विशाल स्विच स्टेटमेंट
class Base { ... }
class A : public Base { ... }
class B : public Base { ... }
...
class Z : public Base { ... }
Base* depends(int input) {
switch (input) {
case 1:
return new A(...);
case 2:
return new B(...);
...
case 26:
return new Z(...);
default:
...
}
}
मैं इस डिजाइन करने के लिए किसी भी बेहतर तरीका है सोच रहा था:
अभी, मैं इस तरह एक विशाल स्विच बयान की है। मुझे कई "डिज़ाइन पैटर्न" नहीं हैं (मुझे लगता है कि उन्हें यही कहा जाता है) इसलिए मुझे नहीं पता कि यह डिजाइन करने के लिए एक (स्पष्ट) बेहतर तरीका है या नहीं।
कक्षाओं या कक्षा के नामों में अपनी कुंजी मैपिंग करने के लिए एक शब्दकोश होना अच्छा होगा (या आपकी चाबियाँ इट्स हैं तो केवल एक सरणी)। लेकिन क्या यह संभव है? समान प्रश्न देखें: http://stackoverflow.com/questions/582331/c-is-there-a-way-to-instantiate-objects-from-a-string-holding-their-class-name –
@ रे धन्यवाद लिंक के लिए, यह प्रश्न मेरा बहुत ही समान है, और बहुत अधिक प्रश्न teh सवाल है। –