1. राज्य पैटर्न क्या है

राज्य पैटर्न एक प्रकार का व्यावहारिक डिज़ाइन पैटर्न है जो किसी वस्तु के विभिन्न स्थितियों में अलग-अलग व्यवहार की समस्या को हल करने के लिए प्रयोग किया जाता है। यह वस्तु के व्यवहार को विभिन्न स्थिति कक्षाओं में संग्रहीत करता है, जो वस्तु को अंतर्निहित स्थिति में होने वाले बदलाव के आधार पर उसका व्यवहार रनटाइम में बदलने देता है।

2. राज्य पैटर्न की विशेषताएँ और फायदे

राज्य पैटर्न की मुख्य विशेषताएं और फायदे निम्नलिखित हैं:

  • यह जटिल स्थिति न्याय के लोजिक को विभिन्न राज्य कक्षाओं में संक्षेपित करता है, कोड की रखरखाव को बढ़ाता है।
  • खुला / बंद सिद्धांत: नए राज्य कक्षाओं को जोड़कर आसानी से नए स्थितियों को जोड़ा जा सकता है।
  • प्रत्येक राज्य कक्षा एक-दूसरे के निर्भरता से है, एक राज्य कक्षा को संशोधित करने से अन्य राज्य कक्षाओं के कोड को प्रभावित नहीं करेगा।
  • शर्ती वाक्य न्याय को सरल बनाता है, कोड पठनीयता और परिपट्ति में सुधार करता है।

3. राज्य पैटर्न के व्यावहारिक लागू के उदाहरण

राज्य पैटर्न का कई व्यावहारिक लागू में वास्तविक जीवन में अनेक प्रयोग हैं, जैसे:

  • यातायात चिन्ह लाइट: विभिन्न स्थितियों के आधार पर यातायात चिन्ह लाइट द्वारा विभिन्न प्रकार के चिन्ह निकाले जाते हैं।
  • आदेश स्थिति प्रबंधन: आदेश में विभिन्न स्थितियों में विभिन्न ऑपरेशन और व्यवहार होता है, जैसे कि भुगतान किया गया है, भेजा गया है, और प्राप्त किया गया है।

4. गोलैंग में राज्य पैटर्न का अनुमान लगाना

4.1 UML कक्षा आरेख

गोलैंग में राज्य पैटर्न

4.2 उदाहरण परिचय

इस उदाहरण में, हम एक सरल आदेश स्थिति प्रबंधन प्रणाली को अनुमानित करेंगे। आदेश के विभिन्न स्थितियां होती हैं, जैसे कि भुगतान किया गया है, भेजा गया है, और प्राप्त किया गया है। विभिन्न स्थितियों के आधार पर, आदेश में विभिन्न ऑपरेशन और व्यवहार होता है।

4.3 अंमलन प्रकार प्रदर्शन

4.3.1 आदेश स्थिति इंटरफ़ेस और ठोस स्थिति कक्षाएँ परिभाषित करें

// राज्य इंटरफ़ेस
type State interface {
	Handle(context *Context)
}

// ठोस राज्य कक्षा A
type ConcreteStateA struct {
	name string
}

func (c *ConcreteStateA) Handle(context *Context) {
	fmt.Println("वर्तमान स्थिति है:", c.name)
	fmt.Println("स्थिति A के लिए विशिष्ट ऑपरेशन का कार्रवाई कर रहा है...")
context.SetState(&ConcreteStateB{name: "सठिति B  कक्षा"})
}

// ठोस राज्य कक्षा B
type ConcreteStateB struct {
	name string
}

func (c *ConcreteStateB) Handle(context *Context) {
	fmt.Println("वर्तमान स्थिति है:", c.name)
	fmt.Println("स्थिति B के लिए विशिष्ट ऑपरेशन का कार्रवाई कर रहा है...")
context.SetState(&ConcreteStateA{name: "स्थिति A  कक्षा"})
}

4.3.2 आदेश संदर्भ कक्षा और स्थिति परिवर्तन विधियाँ परिभाषित करें

// संदर्भ कक्षा
type Context struct {
	state State
}

// आदेश का प्रसंस्करण
func (c *Context) Handle() {
	c.state.Handle(c)
}

// स्थिति सेट करें
func (c *Context) SetState(state State) {
	c.state = state
}

4.3.3 ठोस स्थिति कक्षाओं के लिए स्थिति परिवर्तन विधियाँ का कार्रवाई करें

// ठोस स्थिति कक्षा A के लिए स्थिति परिवर्तन विधि
func (c *ConcreteStateA) SwitchStateB(context *Context) {
	context.SetState(&ConcreteStateB{name: "सठिति B  कक्षा"})
}

// ठोस स्थिति कक्षा B के लिए स्थिति परिवर्तन विधि
func (c *ConcreteStateB) SwitchStateA(context *Context) {
	context.SetState(&ConcreteStateA{name: "स्थिति A  कक्षा"})
}

4.3.4 राज्य पैटर्न का प्रयोग करके आदेश स्थिति प्रबंधन

func main() {
	// आदेश संदर्भ का प्रारंभ करें
	context := &Context{
		state: &ConcreteStateA{name: "सठिति A  कक्षा"},
	}

	// आदेश का प्रसंस्करण
	context.Handle()

	// स्थिति स्विच
	context.state.(*ConcreteStateA).SwitchStateB(context) // सठिति B  कक्षा पर स्विच करें
	context.Handle()

	context.state.(*ConcreteStateB).SwitchStateA(context) // स्थिति A  कक्षा में वापस स्विच करें
	context.Handle()
}

सारांश

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