डेकोरेटर डिजाइन पैटर्न क्या है?
और आप अपने रूबी प्रोजेक्ट्स में इस पैटर्न का उपयोग कैसे कर सकते हैं?
डेकोरेटर डिज़ाइन पैटर्न नई क्षमताओं . जोड़कर किसी ऑब्जेक्ट को बेहतर बनाने में आपकी सहायता करता है इसमें बिना कक्षा बदले।
आइए एक उदाहरण देखें!
लॉगिंग और प्रदर्शन
इस उदाहरण में हम रेस्ट-क्लाइंट जैसे रत्न का उपयोग करके HTTP अनुरोध कर रहे हैं।
जो दिखता है वह यहां दिया गया है:
require 'restclient' data = RestClient.get("www.rubyguides.com")
अब :
मान लें कि हम अपने कुछ अनुरोधों में लॉगिंग जोड़ना चाहते हैं, और हम RestClient
को बदलना नहीं चाहते हैं मॉड्यूल।
हम इसे डेकोरेटर पैटर्न का उपयोग करके कर सकते हैं।
यहां हमारा लॉगिंग मॉड्यूल है :
module LogHTTPRequest def get(url) puts "Sending Request For #{url}" super end endडालता है
यह उस जानकारी को प्रिंट करेगा जो हम स्क्रीन पर चाहते हैं और फिर मूल को कॉल करें get
RestClient
. से विधि ।
किसी अनुरोध में लॉगिंग क्षमताएं जोड़ने के लिए आप extend
. का उपयोग कर सकते हैं विधि।
इसे पसंद करें :
class HTTPClient def initialize(client = RestClient) @client = client end def get(*args) @client.get(*args) end end client = HTTPClient.new client.extend(LogHTTPRequest) client.get("rubyguides.com")
आपको यह HTTPClient
बनाना होगा रैपर वर्ग क्योंकि RestClient
एक मॉड्यूल है और आप मॉड्यूल से ऑब्जेक्ट नहीं बना सकते।
डेकोरेटर पैटर्न का उपयोग कब करें
इस पैटर्न की खूबी यह है कि आप केवल एक वस्तु को बढ़ा रहे हैं , ताकि आपके पास एक गैर-लॉगिंग क्लाइंट और एक लॉगिंग क्लाइंट हो सके।
एक अन्य लाभ यह है कि आप इन सज्जाकारों को परत कर सकते हैं और एक है जो प्रदर्शन परीक्षण करता है, दूसरा लॉगिंग के लिए, आदि।
यदि आप HTTPClientWithLogging
बनाने के लिए इनहेरिटेंस का उपयोग करते हैं तो डेकोरेटर्स का संयोजन संभव नहीं होगा , और एक HTTPClientWithPerformanceTesting
कक्षा।
आपके पास WithLogging
नहीं हो सकता है और WithPerformanceTesting
उसी समय जब तक आप यह कक्षा नहीं बनाते…
class HTTPClientWithLoggingAndPerformanceTesting # ... end
डेकोरेटर पैटर्न हल करता है कोड दोहराव से बचने . के दौरान यह समस्या और पागल वर्ग के नाम।
वीडियो
सारांश
आपने डेकोरेटर डिज़ाइन पैटर्न के बारे में जान लिया है , यह पैटर्न आपको ऑब्जेक्ट में नई क्षमताएं जोड़ने . में मदद करता है बिना कक्षा बदले।
निष्क्रिय मत बनो! अब इस अवधारणा का अभ्यास करने और इसे स्वयं लागू करने की आपकी बारी है। जरूरत पड़ने पर यह आपको इसे याद रखने में मदद करेगा।
इस लेख को शेयर करें ताकि और लोग इसे पढ़ सकें 🙂