ডেকোরেটর ডিজাইন প্যাটার্ন কি?
এবং কিভাবে আপনি আপনার রুবি প্রকল্পে এই প্যাটার্ন ব্যবহার করতে পারেন?
ডেকোরেটর ডিজাইন প্যাটার্ন আপনাকে নতুন ক্ষমতা যোগ করে একটি বস্তু উন্নত করতে সাহায্য করে ক্লাস পরিবর্তন না করেই এটিতে।
আসুন একটি উদাহরণ দেখি!
লগিং এবং কর্মক্ষমতা
এই উদাহরণে আমরা রেস্ট-ক্লায়েন্টের মতো একটি রত্ন ব্যবহার করে 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 তৈরি করতে হবে wrapper ক্লাস কারণ RestClient একটি মডিউল এবং আপনি মডিউল থেকে বস্তু তৈরি করতে পারবেন না।
কখন ডেকোরেটর প্যাটার্ন ব্যবহার করবেন
এই প্যাটার্নের সৌন্দর্য হল আপনি শুধুমাত্র একটি বস্তু উন্নত করছেন , যাতে আপনার একটি নন-লগিং ক্লায়েন্ট এবং একটি লগিং ক্লায়েন্ট থাকতে পারে।
আরেকটি সুবিধা হল আপনি এই ডেকোরেটরগুলিকে স্তর দিতে পারেন এবং একটি যেটি পারফরম্যান্স টেস্টিং করে, আরেকটি লগিং করার জন্য, ইত্যাদি।
আপনি যদি একটি HTTPClientWithLogging তৈরি করতে উত্তরাধিকার ব্যবহার করেন তবে ডেকোরেটরগুলিকে একত্রিত করা সম্ভব হবে না , এবং একটি HTTPClientWithPerformanceTesting ক্লাস।

আপনার কাছে WithLogging থাকতে পারে না এবং WithPerformanceTesting একই সময়ে যদি না আপনি এই ক্লাসটি তৈরি করেন…
class HTTPClientWithLoggingAndPerformanceTesting # ... end
ডেকোরেটর প্যাটার্ন সমাধান করে কোড সদৃশ এড়ানোর সময় এই সমস্যা এবং পাগল শ্রেণীর নাম।
ভিডিও
সারাংশ
আপনি ডেকোরেটর ডিজাইন প্যাটার্ন সম্পর্কে শিখেছেন , এই প্যাটার্ন আপনাকে অবজেক্টে নতুন ক্ষমতা যোগ করতে সাহায্য করে ক্লাস পরিবর্তন না করেই।
নিষ্ক্রিয় হবেন না! এখন আপনার পালা অনুশীলন করার এবং এই ধারণাটি নিজেই প্রয়োগ করুন। এটি আপনাকে এটি মনে রাখতে সাহায্য করবে যখন আপনার প্রয়োজন হবে৷
এই নিবন্ধটি শেয়ার করুন যাতে আরো মানুষ এটি পড়তে পারে 🙂
৷