कहें कि हमारे पास ए, बी, सी, डी और ई, और विधियों एम 1, एम 2, एम 3 पिछले प्रकार के एकल तर्क लेते हैं। आप उन्हें इस तरह की तालिका में रख सकते हैं:
| A | B | C | D | E |
m1 | | | | | |
m2 | | | | | |
m3 | | | | | |
"स्विच" कथन रणनीति एक समय में इस तालिका की एक पंक्ति को कार्यान्वित कर रही है। मान लीजिए कि आप एक नया प्रकार एफ जोड़ते हैं। आपको इसका समर्थन करने के लिए सभी कार्यान्वयन को संशोधित करना होगा।
कक्षा-आधारित पॉलीमोर्फिज्म (सी ++, जावा, आदि) आपको इसके बजाय एक संपूर्ण कॉलम लागू करने की अनुमति देता है। एक नया प्रकार जोड़ना इतना आसान है, क्योंकि आपको पहले से परिभाषित कक्षाओं को बदलने की ज़रूरत नहीं है। लेकिन एक नई विधि जोड़ना कठिन है, क्योंकि आपको इसे अन्य सभी प्रकारों में जोड़ना होगा।
बहुआयामी आपको तालिका के एकल कोशिकाओं को स्वतंत्र रूप से एक-दूसरे से लागू करने की अनुमति देते हैं।
यदि आपको कई तर्कों पर प्रेषण करना है तो यह लचीलापन भी अधिक है। प्रत्येक नया तर्क इस तालिका में एक और आयाम जोड़ता है, और दोनों स्विच-आधारित और कक्षा-आधारित प्रेषण बहुत जटिल हो जाते हैं (सी.एफ. विज़िटर पैटर्न)।
नोट, कि बहुआयामी वास्तव में चित्रित की तुलना में अधिक सामान्य हैं, क्योंकि आप तर्कों के प्रकारों पर नहीं, बल्कि बहुत कुछ भी भेज सकते हैं।
यदि कोई कथन और अतिव्यापी गोटो के बीच की रेखा खींची गई है? – Kevin
आपको रुचि हो सकती है http://stackoverflow.com/q/5986120/625403, जो वास्तव में एक डुप्लिकेट नहीं है लेकिन निकट से संबंधित है। – amalloy