ডেকোরেটর ডিজাইন প্যাটার্ন কি?
এবং কিভাবে আপনি আপনার রুবি প্রকল্পে এই প্যাটার্ন ব্যবহার করতে পারেন?
ডেকোরেটর ডিজাইন প্যাটার্ন আপনাকে নতুন ক্ষমতা যোগ করে একটি বস্তু উন্নত করতে সাহায্য করে ক্লাস পরিবর্তন না করেই এটিতে।
আসুন একটি উদাহরণ দেখি!
লগিং এবং কর্মক্ষমতা
এই উদাহরণে আমরা রেস্ট-ক্লায়েন্টের মতো একটি রত্ন ব্যবহার করে 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
ডেকোরেটর প্যাটার্ন সমাধান করে কোড সদৃশ এড়ানোর সময় এই সমস্যা এবং পাগল শ্রেণীর নাম।
ভিডিও
সারাংশ
আপনি ডেকোরেটর ডিজাইন প্যাটার্ন সম্পর্কে শিখেছেন , এই প্যাটার্ন আপনাকে অবজেক্টে নতুন ক্ষমতা যোগ করতে সাহায্য করে ক্লাস পরিবর্তন না করেই।
নিষ্ক্রিয় হবেন না! এখন আপনার পালা অনুশীলন করার এবং এই ধারণাটি নিজেই প্রয়োগ করুন। এটি আপনাকে এটি মনে রাখতে সাহায্য করবে যখন আপনার প্রয়োজন হবে৷
এই নিবন্ধটি শেয়ার করুন যাতে আরো মানুষ এটি পড়তে পারে 🙂
৷