Vivasoft-logo

5.4 মেথড ডেকোরেটর্সঃ

একটি মেথড ডেকোরেটর মেথডের আগে ডিক্লেয়ার করা হয়। এটি মেথডের প্রোপার্টি ডেস্ক্রিপ্টরে (property descriptor) এপ্লাই করা হয় এবং এর সাহায্যে মেথডকে পর্যবেক্ষণ, সংশোধন ও প্রতিস্থাপন করা হয়।

মেথড ডেকোরেটর্সের এক্সপ্রেশনটি ফাংশন হিসাবে রানটাইমে কল হয়, এবং ফাংশনটি ৩টি আর্গুমেন্টস্‌ নিতে পারে:

১। ক্লাসের স্ট্যাটিক মেম্বারের জন্য কন্সট্রাক্টর ফাংশন, ইন্সট্যান্স (instance) মেম্বারের জন্য ক্লাসের প্রোটোটাইপ।

২। মেম্বারের নাম।

৩। মেম্বারের প্রোপার্টি ডেস্ক্রিপ্টর (property descriptor).

যদি মেথড ডেকোরেটর মান রিটার্ন করে তাহলে সেটা মেথডের প্রোপার্টি ডেস্ক্রিপ্টর হিসেবে ব্যবহার হবে।

নিচের উদাহরণে আমরা দেখতে পাবো, যখন @enumerable নামক একটি মেথড ডেকোরেটর যখন Greeter ক্লাসের একটি মেথডের উপর প্রয়োগ করা হয়:

				
					class Greeter {
  greeting: string;
  constructor(message: string) {
    this.greeting = message;
  }
 
  @enumerable(false)
  greet() {
    return "Hello, " + this.greeting;
  }
}
				
			

আমরা @enumerable ডেকোরেটরকে এইভাবে ডিক্লেয়ার করতে পারি:

method decoretors

এখানে @enumerable(false) ডেকোরেটরটি একটি ডেকোরেটর ফ্যাক্টরি। যখন @enumerable(false) ডেকোরেটর কল হয় সেটা প্রোপার্টি ডেস্ক্রিপ্টরের enumerable বৈশিষ্টকে পরিবর্তন করে।

এইভাবেই আমরা কোন মেথডের বৈশিষ্টকে পরিবর্তন বা ওভাররাইড করে থাকি ডেকোরেটর্সের সাহায্যে।