डेकोरेटर डिजाइन पैटर्न क्या है?
और आप अपने रूबी प्रोजेक्ट्स में इस पैटर्न का उपयोग कैसे कर सकते हैं?
डेकोरेटर डिज़ाइन पैटर्न नई क्षमताओं . जोड़कर किसी ऑब्जेक्ट को बेहतर बनाने में आपकी सहायता करता है इसमें बिना कक्षा बदले।
आइए एक उदाहरण देखें!
लॉगिंग और प्रदर्शन
इस उदाहरण में हम रेस्ट-क्लाइंट जैसे रत्न का उपयोग करके 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
डेकोरेटर पैटर्न हल करता है कोड दोहराव से बचने . के दौरान यह समस्या और पागल वर्ग के नाम।
वीडियो
सारांश
आपने डेकोरेटर डिज़ाइन पैटर्न के बारे में जान लिया है , यह पैटर्न आपको ऑब्जेक्ट में नई क्षमताएं जोड़ने . में मदद करता है बिना कक्षा बदले।
निष्क्रिय मत बनो! अब इस अवधारणा का अभ्यास करने और इसे स्वयं लागू करने की आपकी बारी है। जरूरत पड़ने पर यह आपको इसे याद रखने में मदद करेगा।
इस लेख को शेयर करें ताकि और लोग इसे पढ़ सकें 🙂