PHP में डिज़ाइन पैटर्न: कोड उदाहरणों के साथ उन्नत तकनीकें

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

PHP में डिज़ाइन पैटर्न: कोड उदाहरणों के साथ उन्नत तकनीकें

डिज़ाइन पैटर्न सॉफ्टवेयर विकास के दौरान उत्पन्न होने वाली सामान्य समस्याओं के सिद्ध समाधान हैं। यदि आपने पहले से ही बुनियादी पैटर्न (Singleton, Factory, Observer) में महारत हासिल कर ली है, तो अब अगले स्तर पर जाने का समय है। इस लेख में, हम PHP में चार उन्नत व्यवहारिक पैटर्न पर चर्चा करेंगे: स्ट्रेटेजी, कमांड, स्टेट और चेन ऑफ रिस्पॉन्सिबिलिटी। आप जानेंगे कि वे लचीला, रखरखाव योग्य और स्केलेबल कोड लिखने में कैसे मदद करते हैं।



1. स्ट्रेटेजी पैटर्न (Strategy)

स्ट्रेटेजी पैटर्न एल्गोरिदम के एक परिवार को परिभाषित करने, उनमें से प्रत्येक को एनकैप्सुलेट करने और उन्हें विनिमेय बनाने की अनुमति देता है। यह विशेष रूप से तब उपयोगी होता है जब आपके पास एक ही कार्य को करने के कई तरीके हों, और आप मुख्य वर्ग को बदले बिना उनके बीच आसानी से स्विच करना चाहते हैं।



कब उपयोग करें:

  • आपके पास एल्गोरिदम के कई विकल्प हैं जो रनटाइम के दौरान बदल सकते हैं।
  • आप बड़ी सशर्त संरचनाओं (if-else या switch) से बचना चाहते हैं।
  • एल्गोरिदम को एप्लिकेशन के विभिन्न भागों में पुन: उपयोग किया जा सकता है।


उदाहरण: शिपिंग लागत गणना प्रणाली

कल्पना करें कि आपके पास एक ऑनलाइन स्टोर है, और शिपिंग लागत चुने गए वाहक पर निर्भर करती है: रूसी पोस्ट, DHL या कूरियर सेवा।



<?php

// स्ट्रेटेजी इंटरफ़ेसinterface ShippingStrategy { public function calculate(float $weight, float $distance): float;}

// विशिष्ट स्ट्रेटेजीclass RussianPostShipping implements ShippingStrategy { public function calculate(float $weight, float $distance): float { return ($weight * 0.5) + ($distance * 0.1); }}

class DHLShipping implements ShippingStrategy { public function calculate(float $weight, float $distance): float { return ($weight * 1.2) + ($distance * 0.3) + 10; }}

class CourierShipping implements ShippingStrategy { public function calculate(float $weight, float $distance): float { return ($weight * 0.8) + ($distance * 0.2) + 5; }}

// संदर्भclass Order { private float $weight; private float $distance; private ShippingStrategy $strategy;

public function __construct(float $weight, float $distance, ShippingStrategy $strategy) { $this->weight = $weight; $this->distance = $distance; $this->strategy = $strategy; }

public function setStrategy(ShippingStrategy $strategy): void { $this->strategy = $strategy; }

public function getShippingCost(): float { return $this->strategy->calculate($this->weight, $this->distance); }}

// उपयोग$order = new Order(2.5, 100, new RussianPostShipping());echo "रूसी पोस्ट द्वारा शिपिंग: " . $order->getShippingCost() . " रूबल";

$order->setStrategy(new DHLShipping());echo "DHL द्वारा शिपिंग: " . $order->getShippingCost() . " रूबल";?>


इस उदाहरण में, हम Order वर्ग को छुए बिना लागत गणना एल्गोरिदम को आसानी से बदलते हैं। एक नया वाहक जोड़ना ShippingStrategy इंटरफ़ेस को लागू करने वाला एक नया वर्ग बनाने तक सीमित हो जाता है।



2. कमांड पैटर्न (Command)

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



कब उपयोग करें:

  • संचालन को पूर्ववत (undo) और पुनः करने (redo) की आवश्यकता है।
  • संचालन को कतार में रखने या उन्हें एसिंक्रोनस रूप से निष्पादित करने की आवश्यकता है।
  • आप अनुरोध भेजने वाले को अनुरोध प्राप्त करने वाले से अलग करना चाहते हैं।


उदाहरण: क्रियाओं को पूर्ववत करने वाला टेक्स्ट एडिटर



<?php

// कमांड इंटरफ़ेसinterface Command { public function execute(): void; public function undo(): void;}

// प्राप्तकर्ता (Receiver)class

ब्लॉग

पुस्तक अनुशंसाएँ