2012-10-09 13 views
6

मैं एक आवेदन पर काम कर रहा हूं और रॉबर्ट सी मार्टिन के सॉलिड सिद्धांतों का पालन करने की कोशिश कर रहा हूं। मैं कमांड पैटर्न का उपयोग कर रहा हूं और मैं कार्यान्वयन के बारे में सोच रहा था। स्वच्छ कोड और एग्इल सिद्धांतों में उनके सभी उदाहरणों में, सी # में पैटर्न और प्रथाओं में उनके आदेश वस्तुएं कभी भी कुछ नहीं लौटती हैं। उनका कमान इंटरफ़ेस है;डेटा लौटने के लिए कमांड पैटर्न उपयोग

public interface Command 
{ 
    void Execute(); 
} 

उदाहरण के सभी "AddEmployee", "DelEmployee", "EditEmployee", आदि मैं एक आदेश है कि हो सकता है "GetAllEmployees" या कुछ अन्य विशेष "Interactor" मैं के लिए पैदा करेगा है चाहेंगे रहे हैं वह विशिष्ट उद्देश्य? एक तरीका यह है कि मैं उस विशिष्ट मामले को संभालने के बारे में सोच रहा हूं, दो इंटरफेस एक उपरोक्त की तरह गैर सामान्य है और इस तरह एक सामान्य है;

public interface Command<T> 
{ 
    T Execute(); 
} 

क्या मैं पूछ रहा हूँ यह इस पद्धति का एक स्वीकार्य कार्यान्वयन किया जाएगा है या वहाँ एक और तरीका है जिससे हम आवेदन से डेटा का उपयोग होता है?

+1

ऐसा लगता है कि आप CQS (कमांड और क्वेरी अलगाव) को लागू करने का प्रयास कर रहे हैं। आदेशों को कभी भी कोई डेटा वापस नहीं करना चाहिए। प्रश्नों के लिए आपके पास विशिष्ट क्वेरी ऑब्जेक्ट्स हैं। बस '' क्वेरी '' पर नाम बदलें और आप अच्छे हैं। – alexn

उत्तर

5

एक आदेश कुछ ऐसा है जो राज्य (अपडेट, डिलीट या जोड़) को बदलता है।

डेटा प्राप्त करते समय (और इसे नहीं बदलते), आप क्वेरी का उपयोग करेंगे।

CQS और संबंधित CQRS देखें।

+3

मुझे लगता है कि यहां सीक्यूआरएस शुरू करने से बहुत भ्रम पैदा हो सकता है। – alexn

संबंधित मुद्दे