कमांड ऑब्जेक्ट पैटर्न एक है कि मैं अभी भी वास्तव में समझने में सक्षम नहीं हूं और मुझे उस कोड में एक कार्यान्वयन मिला है जिसे मैं वर्तमान में काम कर रहा हूं, इसलिए मैंने इसे लंबे समय तक और कठिन अध्ययन किया ताकि मैं इसे अंत में प्राप्त कर सकूं असली दुनिया उदाहरण। समस्या यह है कि मुझे यकीन है कि यह उचित रूप से कार्यान्वित नहीं किया गया है और यह केवल किसी ऐसे व्यक्ति द्वारा किया गया है जो इसके बारे में पढ़ता है और सोचा कि यह यहां समझ में आया है।कमांड ऑब्जेक्ट पैटर्न wannabe या असली चीज़?
मुझे यह आप पर दिखाने की अनुमति दें (गोपनीयता संबंधी कारणों यह बहुत सरल बनाया जाएगा के लिए, लेकिन मैं मुख्य अवधारणाओं को दिखाने के लिए मेरी पूरी कोशिश करेंगे):
public class CommandOne
{
public CommandOne(Manager manager, MyForm form)
{
m_manager = manager;
m_form = form;
}
public void Execute()
{
m_manager.CommandOne(m_form);
}
}
public class CommandTwo
{
public CommandTwo(Manager manager, MyForm form)
{
m_manager = manager;
m_form = form;
}
public void Execute()
{
m_manager.CommandTwo(m_form);
}
}
पहली बात यह है कि मुझे अजीब के रूप में हमलों है कि ये दो वर्ग किसी भी अमूर्त वर्ग से विरासत में नहीं हैं और न ही एक आम इंटरफ़ेस को कार्यान्वित कर रहे हैं।
कोड इन आदेशों का उपयोग करता है इस प्रकार है:
public class MyForm : System.Windows.Forms.Form
{
public MyForm(Manager manager)
{
m_manager = manager;
}
private void SomeMethod()
{
....
var cmd = new CommandOne(manager, this);
cmd.Execute();
...
}
private void OtherMethod()
{
....
var cmd = new CommandTwo(manager, this);
cmd.Execute();
...
}
}
तो जिस तरह से मैं इसे देख, इस फार्म बिल्कुल प्रबंधक जो अपने कंस्ट्रक्टर्स के माध्यम से इसे करने के लिए इंजेक्शन की जा रही है को छोड़कर शामिल सभी वर्गों के लिए युग्मित है । तो इस कोड के साथ मुझे वास्तव में "कमांड" कक्षाएं बनाने का कोई लाभ नहीं दिखता है जो मूल रूप से प्रबंधक के तरीकों पर कॉल का प्रतिनिधित्व कर रहे हैं क्योंकि फॉर्म उन्हें तत्काल लागू कर रहा है और बाद में निष्पादन विधि को कॉल कर रहा है।
तो क्या कोई कृपया बता सकता है कि कौन से टुकड़े, यदि कोई हैं, तो यह कार्यान्वयन वास्तव में एक कमांड ऑब्जेक्ट पैटर्न होने के लिए गायब है और हालांकि यह बहुत ही व्यक्तिपरक हो सकता है, इस मामले में इसे लागू करने का क्या फायदा होगा?
धन्यवाद।
'फॉर्म' के लिए उपयोग करने वाले आदेश क्या हैं? – SwDevMan81
यह प्रबंधक में प्रतिनिधि विधि को भेजा जा रहा है जो उपयोगकर्ता से पूछने वाले संदेश बॉक्स को प्रदर्शित करता है यदि वह अपने परिवर्तनों को सहेजना चाहता है या नहीं, और उसके अनुसार फॉर्म की गुणों को संशोधित करता है। आईएमओ यह वास्तव में खराब डिजाइन है, लेकिन मुझे लगता है कि, सवाल के दायरे से परे :) –