का उपयोग करें, मैं एक परियोजना में रॉबर्ट मार्टिन के Clean Architecture को लागू करने पर विचार कर रहा हूं और मैं यह पता लगाने की कोशिश कर रहा हूं कि गैर-तुच्छ उपयोग के मामलों को कैसे संभाला जाए।स्वच्छ वास्तुकला - रॉबर्ट मार्टिन - केस ग्रैन्युलरिटी
मुझे जटिल/रचनाकृत उपयोग मामलों में आर्किटेक्चर को स्केल करना मुश्किल लगता है, विशेष रूप से उन मामलों का उपयोग करें जहां अभिनेता किसी उपयोगकर्ता के विपरीत सिस्टम है, क्योंकि सिस्टम में कुछ प्रकार की बैच प्रोसेसिंग होती है।
समझाने के उद्देश्य से लिए, हम एक का उपयोग मामला मान की तरह
class UpdateAllAccountBalancesInteraction {
function Execute() {
Get a list of all accounts
For each account
Get a list of all new transactions for account
For each transaction
Perform some specific calculation on the transaction
Update account balance
}
}
इसके अलावा स्यूडोकोड में लागू "सिस्टम सभी खाते में शेष राशि अपडेट हो जाता है" की तरह, "सभी खातों की एक सूची प्राप्त", "सभी की एक सूची प्राप्त करते हैं खाते के लिए नए लेनदेन "," लेनदेन पर कुछ विशिष्ट गणना करें "," खाता शेष राशि अपडेट करें "उनके सभी वैध उपयोग के मामले हैं और उनमें से प्रत्येक पहले से ही अपनी बातचीत कक्षा में लागू हो चुका है।
कुछ सवाल उठता है:
- उपयोग के मामले है एक व्यवसाय के भावी इसे से भी एक वैध उपयोग के मामले "सिस्टम सभी खाते में शेष राशि अपडेट हो जाता है" या इसे छोटा उपयोग के मामलों में टूट जाना चाहिए (हालांकि ऐसा लगता है, यह वैध व्यावसायिक परिदृश्य है)?
- अद्यतनअॉलएक्साउंटबैलेंसइंटरेशन एक वैध बातचीत है?
- क्या अन्य बातचीत को ऑर्केस्ट्रेट करने की अनुमति/बातचीत की अनुमति है?
- क्या कोड है जो अन्य इंटरैक्शन को कहीं और से संबंधित करता है?
- यह सिर्फ एक बातचीत के रूप में UpdateAllAccountBalancesInteraction के लिए ठीक है, लेकिन यह कॉल कार्यों बल्कि अन्य interactors के वाद्यवृन्दकार के रूप में कार्य के अलावा अन्य interactors द्वारा साझा किया है?
मुझे अपना दिमाग बनाना और मेरी परियोजना के साथ आगे बढ़ना पड़ा, इसलिए मैंने निष्कर्ष निकाला कि प्रेजेंटेशन/[आलेख] में उपलब्ध उदाहरण (https://blog.8thlight.com/uncle-bob/2012/08/ 13/the-clean-architecture.html) तुच्छ हैं और निर्भरता अलगाव परतों को संदर्भित करता है, मुझे लगता है कि इस पर सहमत होना आसान है। इस बात को ध्यान में रखते हुए, मैंने निष्कर्ष निकाला कि एक इंटरैक्शन की 'निष्पादन()' विधि को किसी अन्य इंटरैक्शन की 'निष्पादन()' विधि को कॉल नहीं करना चाहिए, लेकिन वे निश्चित रूप से उसी परत में कोड साझा कर सकते हैं। – PlusInfinite