2009-04-17 14 views
5

मैं एक जादूगर शैली उपयोगकर्ता इंटरफ़ेस को कार्यान्वित कर रहा हूं। चूंकि उपयोगकर्ता विज़ार्ड के माध्यम से बहता है, प्रत्येक स्क्रीन पर चुने गए विकल्पों के आधार पर, अगला क्लिक करके, उपयोगकर्ता को विज़ार्ड स्क्रीन के एक निश्चित सेट से गुजरना होगा।DesignPatterns: विज़ार्ड शैली उपयोगकर्ता इंटरफ़ेस के लिए उपयोग करने के लिए सबसे उपयुक्त कौन सा है?

यह एएसपी.नेट एमवीसी में बनाया जा रहा है। मैं सोच रहा हूं कि विज़ार्ड में दिए गए चरणों के अनुक्रम के तर्क को लागू करने के लिए कौन सा डिज़ाइन पैटर्न सबसे उपयुक्त होगा। दोबारा, उनके पास चुने गए विकल्पों के आधार पर विज़ार्ड के माध्यम से कई पथ हैं।

क्या मैं एक लिंक की गई सूची का उपयोग कर सकता हूं? "Command Design Pattern"? आप क्या सलाह देते हैं?

इसे एक और तरीका रखने के लिए: विज़ार्ड में किसी दूसरे चरण को चुनने के आधार पर विज़ार्ड में अगला चरण क्या है, यह निर्धारित करने के तर्क को आप कहां/कैसे समझाते हैं?

उत्तर

1

दूसरे शब्दों में कहें करने के लिए: कहाँ/तुम कैसे अमूर्त करना/निर्धारित करने विज़ार्ड क्या उपयोगकर्ता जादूगर की एक विशेष कदम पर चुना गया है के आधार पर में अगला कदम क्या है के तर्क को संपुटित?

ऐसा करने का एक तरीका विज़ार्ड, चरण और उत्पाद कक्षाओं का मॉडल करना होगा। शायद ऐसा कुछ?

public class Wizard 
{ 
    public Step forward() {//...} 

    public Step backward() {//...} 

    public Step current() {//...} 

    public Product getProduct() {//...} 
} 

public class Step 
{ 
    public String name() {//...} 

    public void commit(Product product) {//...} 

    public void rollback(Product product) {//...} 
} 

public class Product 
{ 
    //... 
} 

विज़ार्ड का उद्देश्य एक उत्पाद (कार, कंप्यूटर, अवकाश, आदि) बनाना है।

इस परिदृश्य में, यह विज़ार्ड है जो अगले चरण का निर्णय लेता है - शायद विज़ार्ड का निर्माण करने वाले उत्पाद की स्थिति के आधार पर। विज़ार्ड यूआई के नियंत्रण में Builder की तरह अभिनय करेगा, जो निदेशक होगा और विज़ार्ड को बताएगा कि किस दिशा में और किस दिशा में संक्रमण करना है। यह तय करने के लिए विज़ार्ड पर निर्भर है कि वास्तव में अगला कदम क्या है। एकाधिक शाखाओं का समर्थन किया जा सकता है, लेकिन यह कार्यान्वयन विज़ार्ड के अंदर छिप जाएगा।

कदम Command Pattern का पूर्ववत/पुनः क्षमता के साथ एक उदाहरण होगा।

3

"State" पैटर्न समझ में आ सकता है, अगर आप उपयोगकर्ता को विज़ार्ड के माध्यम से आगे और पीछे नेविगेट करने की अनुमति देना चाहते हैं।

वर्कफ़्लो पैटर्न भी समझ में आ सकता है। शायद विंडोज वर्कफ़्लो नींव का उपयोग कर जांच करें।

0

मुझे बीऊ से सहमत होना है।

असल में, यदि आपको नेविगेशन तर्क के लिए नियमों के जटिल सेट की आवश्यकता है, तो आपके पास एक जादूगर GUI- wise है, लेकिन हुड के नीचे एक जादूगर नहीं है।

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

+0

लेकिन आपको * कुछ जहां * विज़ार्ड बनाने वाले चरणों का अनुक्रम परिभाषित करना होगा। चूंकि हमें उपयोगकर्ता को पूरा करने वाले विज़ार्ड में कौन से कदम ट्रैक करने में सक्षम होना चाहिए, ताकि हम प्रगति और अन्य चीजें प्रदर्शित कर सकें। या यहां तक ​​कि वे वापस आ सकते हैं जहां उन्होंने उदाहरण के लिए छोड़ा था। – 7wp

1

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

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