/ / डिजाइन पैटर्न ट्रैकिंग / स्टेटस के लिए - डिजाइन-पैटर्न, ट्रैकिंग, स्थिति

ट्रैकिंग / स्थिति के लिए डिजाइन पैटर्न - डिज़ाइन-पैटर्न, ट्रैकिंग, स्थिति

इश्यू ट्रैकर जैसी किसी चीज़ के लिए निकटतम डिज़ाइन पैटर्न क्या है?

आपके पास एक वस्तु है जो विभिन्न स्थितियों में से एक हो सकती है: open, closed, in production.

वर्तमान स्थिति के आधार पर कार्रवाई की जा सकती है।

मेरी शुरुआती मॉडलिंग कुछ इस तरह दिखती है:

class Status
- next_status (None or Status)
- previous_status (None or Status)
- actions (set of Actions)

class Action
- name (string)
- description (string)

क्रियाओं को समूहीकृत करने और समूह को स्थिति में निर्दिष्ट करने की संभावना के साथ। अधिकांश अनुमतियों के मॉडल जैसा आप कह सकते हैं।

बस इनपुट की तलाश थी कि यह किस पैटर्न पर है, इसलिए मैं इसे कुछ और शोध कर सकता हूं। धन्यवाद!

उत्तर:

जवाब के लिए 3 № 1

आप एक प्रतिनिधित्व कर रहे हैं परिमित अवस्था मशीन (एफएसएम), वास्तव में एक फ्लोचार्ट है, लेकिन आपकी कक्षा का डिज़ाइन एक जैसा दिखता है डबल-लिंक की गई सूची। यदि स्थिति पूर्व और अगली स्थिति निर्धारित करती हैयह व्यावहारिक है, लेकिन अधिकांश प्रणालियों में यह असत्य है। अपने उदाहरण में "खुला" की स्थिति पर विचार करें, क्या यह संभव है कि अगला "उत्पादन में" या "बंद" हो सकता है?

यदि दोनों स्टेटस संभावनाएं हैं, तो ऑब्जेक्ट को वस्तु स्थिति बदलने और अपनी श्रेणी के पदानुक्रम में परिवर्तन (या शायद एक्शन की जगह?) जोड़ने पर विचार करें:

class Status
- transitions (Transition[])

class Transition
- from (Status)
- to (Status)

यहां स्थिति यह जानती है कि संक्रमण क्या संभव है (उदाहरण के लिए "खोला गया" "बंद" या "उत्पादन में" संक्रमण हो सकता है)। इस तरह आप एफएसएम का प्रतिनिधित्व करते हैं निर्देशित ग्राफ। इसके अलावा, मेरे खुद के अनुभव में यह आमतौर पर महत्वपूर्ण नहीं है कि एक इकाई को पता है कि यह कहां से आया है इस प्रकार हटाने का prior_status। इसके बजाय पथ को ऑडिट लॉगिंग / डेटाबेस टेबल कैप्चरिंग हिस्ट्री के माध्यम से कैप्चर किया जा सकता है।


जवाब के लिए 0 № 2

का संयोजन सोच रहा हूं राज्य + आदेश