मैंने this explanation on Wikipedia, विशेष रूप से सी ++ नमूना देखा है, और केवल 3 वर्गों को परिभाषित करने, उदाहरण बनाने और उन्हें कॉल करने के बीच अंतर को पहचानने में असफल रहा है, और वह उदाहरण। मैंने जो देखा वह सिर्फ दो अन्य वर्गों को प्रक्रिया में रख रहा था और यह नहीं देख सकता कि लाभ कहाँ होगा। अब मुझे यकीन है कि मुझे कुछ स्पष्ट याद आ रहा है (पेड़ों के लिए लकड़ी) - क्या कोई इसे एक वास्तविक असली दुनिया के उदाहरण का उपयोग करके समझा सकता है?रणनीति पैटर्न का उपयोग करने में लाभ कहां है?
मैं क्या जवाब अब तक से कर सकते हैं, मुझे लगता है ऐसा करने का सिर्फ एक अधिक जटिल तरीके होने के लिए:
have an abstract class: MoveAlong with a virtual method: DoIt()
have class Car inherit from MoveAlong,
implementing DoIt() { ..start-car-and-drive..}
have class HorseCart inherit from MoveAlong,
implementing DoIt() { ..hit-horse..}
have class Bicycle inherit from MoveAlong,
implementing DoIt() { ..pedal..}
now I can call any function taking MoveAlong as parm
passing any of the three classes and call DoIt
Isn't this what Strategy intents? (just simpler?)
[संपादित करें अद्यतन] समारोह मैं का उल्लेख उपरोक्त को दूसरी कक्षा के साथ प्रतिस्थापित किया गया है जिसमें MoveAlong विशेषता होगी जो इस नई कक्षा में लागू एल्गोरिदम के आधार पर आवश्यकता के अनुसार सेट की गई है। (क्या स्वीकार किए जाते हैं जवाब में बताया गया है की तरह।)
[संपादित करें अद्यतन] निष्कर्ष
रणनीति पैटर्न यह का उपयोग करता है है है, लेकिन मैं KISS में एक मजबूत आस्तिक हूँ, और जाते हैं अधिक सरल और कम obfuscatory तकनीक के लिए। अधिकतर जब से मैं आसानी से रखरखाव योग्य कोड पर गुजरना चाहता हूं (और 'मैं सबसे अधिक संभावना है जो परिवर्तन करना है!)।
"नहीं है यह रणनीति का इरादा क्या है? (बस इतना आसान?) "<- बहुत कुछ, सिवाय इसके कि आप अपनी कक्षा का संदर्भ देते हैं और दूसरी कक्षा को इसे कॉल करने की आवश्यकता होती है, जबकि दूसरी कक्षा केवल यह जानती है कि इसमें एक मूवऑलॉन्ग है। यह उन चीजों में से एक है जो एक टीम की स्थिति में अधिक उपयोगी है। – Gerald
हाय जेराल्ड मुझे लगता है कि आपका उदाहरण रणनीति पैटर्न का एक बुरा उदाहरण है। हां यह एक रणनीति है लेकिन आपके मामले में रणनीति पैटर्न को लागू करने से उप-वर्ग होना बेहतर होगा। मुझे यकीन है कि मार्टियन घड़ी की पृथ्वी घड़ी की तुलना में अलग व्यवहार होगा, इसलिए घड़ी वर्ग को उप-वर्ग के लायक है। – RWendi
लॉल ... मैंने अभी यह टिप्पणी देखी है। मुझे लगता है कि यदि आप मंगल ग्रह पर ग्राहकों की अपेक्षा कर रहे हैं, तो यह आपके डिजाइन में मार्टिन घड़ी के बारे में चिंतित हो सकता है।लेकिन चूंकि 100% अधिकांश लोग क्लाइंट मानव पर मानव होने जा रहे हैं, एक सार्वभौमिक समय डेटा प्रतिनिधित्व के साथ, मुझे लगता है कि यह उस एज केस को नजरअंदाज करने के लिए काफी सुरक्षित है, जब तक यह वीडियो गेम के लिए न हो। – Gerald