कॉलबैक दिनचर्या अब तक का सबसे आम परिदृश्य प्रतीत होता है। हालांकि, कई अन्य हैं ...
परिमित राज्य मशीनें जहां (बहु-आयामी) सरणी के तत्व दिनचर्या को इंगित करते हैं जो अगले राज्य को संसाधित/संभालता है। यह एक स्थान (सरणी) में एफएसएम की परिभाषा को रखता है।
सुविधाओं को सक्षम करना और फ़ंक्शन पॉइंटर्स का उपयोग करके सुविधाओं को अक्षम करने के लिए किया जा सकता है। आपके पास ऐसी विशेषताएं हो सकती हैं जिन्हें आप सक्षम या अक्षम करना चाहते हैं जो समान और विशिष्ट चीजें करते हैं। यदि आपके कोड को पॉप्युलेट करने और क्लटटर करने के बजाय-साथ परीक्षण चर का निर्माण होता है, तो आप इसे कोड कर सकते हैं ताकि यह फ़ंक्शन पॉइंटर का उपयोग कर सके और फिर आप फ़ंक्शन पॉइंटर को बदलकर/असाइन करके सुविधाओं को सक्षम/अक्षम कर सकें। यदि आप नए रूपों को जोड़ते हैं, तो आपको अपने सभी को ट्रैक करने की आवश्यकता नहीं है या अन्य मामलों को स्विच करने की आवश्यकता नहीं है (और जोखिम एक गायब है); इसके बजाय आप नई सुविधा को सक्षम करने के लिए बस अपने फ़ंक्शन पॉइंटर को अपडेट करें, या पुराने को अक्षम करें।
कोड अव्यवस्था को कम करने से मैंने पिछले उदाहरण में इसे स्पर्श किया। जैसे ...
switch (a) {
case 0:
func0();
break;
case 1:
func1();
break;
case 2:
func2();
break;
case 3:
func3();
break;
default:
funcX();
break;
}
उदाहरण के लिए सरल किया जा सकता है ...
/* This declaration may be off a little, but I am after the essence of the idea */
void (*funcArray)(void)[] = {func0, func1, func2, func3, funcX};
... appropriate bounds checking on 'a' ...
funcArray[a]();
वहाँ कई और अधिक कर रहे हैं। उम्मीद है की यह मदद करेगा।
यह सी # है, लेकिन यह सी/सी ++ में भी जाता है और फ़ंक्शन पॉइंटर्स की व्यावहारिकता: http://stackoverflow.com/questions/667410/the-benefits-of-using-function-pointers – Algorhythm