একটি ডিজাইন প্যাটার্ন হল একটি টেমপ্লেট যা সফ্টওয়্যার ডিজাইনে একটি সাধারণভাবে পুনরাবৃত্তি হওয়া সমস্যার সমাধান করে।
পর্যবেক্ষক প্যাটার্ন, যা প্রকাশ-সাবস্ক্রাইব প্যাটার্ন নামেও পরিচিত, এটি একটি আচরণগত প্যাটার্ন। এটি আপনাকে একাধিক অবজেক্ট বা গ্রাহকদের অবজেক্টে প্রকাশিত যেকোনো ইভেন্ট সম্পর্কে অবহিত করতে দেয় যা তারা পর্যবেক্ষণ করছে।
দিনের মেকইউজের ভিডিও
এখানে আপনি শিখবেন কিভাবে TypeScript-এ পর্যবেক্ষক ডিজাইন প্যাটার্ন বাস্তবায়ন করতে হয়।
পর্যবেক্ষক প্যাটার্ন
পর্যবেক্ষক প্যাটার্ন প্রকাশক এবং তার গ্রাহকদের মধ্যে একটি থেকে একাধিক সম্পর্ক সংজ্ঞায়িত করে কাজ করে। যখন প্রকাশকের মধ্যে একটি ইভেন্ট ঘটে, তখন এটি সেই ইভেন্টের সমস্ত গ্রাহকদের অবহিত করবে। এই প্যাটার্ন একটি ব্যাপক উদাহরণ জাভাস্ক্রিপ্ট ইভেন্ট শ্রোতা .
প্রেক্ষাপটের জন্য, ধরে নিন আপনি একটি ইনভেন্টরি ট্র্যাকার তৈরি করছেন যা আপনার দোকানে পণ্যের সংখ্যার উপর নজর রাখে। এই ক্ষেত্রে, আপনার দোকান হল বিষয়/প্রকাশক, এবং আপনার ইনভেন্টরি হল পর্যবেক্ষক/সাবস্ক্রাইবার। এই পরিস্থিতিতে পর্যবেক্ষক নকশা প্যাটার্ন ব্যবহার করা সর্বোত্তম হবে।
পর্যবেক্ষক নকশা প্যাটার্নে, আপনার বিষয় ক্লাস তিনটি পদ্ধতি প্রয়োগ করতে হবে:
অ্যান্ড্রয়েডের সাথে এয়ারপডগুলি কীভাবে যুক্ত করবেন
- একটি সংযুক্ত করা পদ্ধতি এই পদ্ধতি বিষয়টিতে একজন পর্যবেক্ষক যুক্ত করে।
- ক বিচ্ছিন্ন করা পদ্ধতি এই পদ্ধতিটি একটি বিষয় থেকে একজন পর্যবেক্ষককে সরিয়ে দেয়।
- ক বিজ্ঞপ্তি/আপডেট করুন পদ্ধতি এই পদ্ধতিটি বিষয়ের পর্যবেক্ষকদের অবহিত করে যখন বিষয়ের অবস্থা পরিবর্তন হয়।
আপনার পর্যবেক্ষক শ্রেণীকে অবশ্যই একটি পদ্ধতি প্রয়োগ করতে হবে, হালনাগাদ পদ্ধতি এই পদ্ধতিটি প্রতিক্রিয়া দেখায় যখন এর বিষয়ের অবস্থার পরিবর্তন হয়।
বিষয় এবং পর্যবেক্ষক ক্লাস বাস্তবায়ন
এই প্যাটার্নটি বাস্তবায়নের প্রথম ধাপ হল বিষয় এবং পর্যবেক্ষক শ্রেণীর জন্য ইন্টারফেস তৈরি করা, যাতে তারা সঠিক পদ্ধতিগুলি বাস্তবায়ন করে তা নিশ্চিত করা:
// Subject/Publisher Interface
interface Subject {
attachObserver(observer: Observer): void;
detachObserver(observer: Observer): void;
notifyObserver(): void;
}
// Observer/Subscriber Interface
interface Observer {
update(subject: Subject): void;
}
উপরের কোড ব্লকের ইন্টারফেসগুলি আপনার কংক্রিট ক্লাসগুলিকে প্রয়োগ করতে হবে এমন পদ্ধতিগুলিকে সংজ্ঞায়িত করে।
একটি কংক্রিট বিষয় ক্লাস
পরবর্তী ধাপ হল একটি কংক্রিট বিষয় ক্লাস বাস্তবায়ন করা যা বাস্তবায়ন করে বিষয় ইন্টারফেস:
// Subject
class Store implements Subject {}
পরবর্তী, আরম্ভ করুন বিষয় এর রাজ্যে দোকান ক্লাস বিষয়ের পর্যবেক্ষকরা এই অবস্থার পরিবর্তনগুলিতে প্রতিক্রিয়া জানাবে।
এই ক্ষেত্রে, রাষ্ট্র একটি সংখ্যা, এবং পর্যবেক্ষকরা সংখ্যা বৃদ্ধিতে প্রতিক্রিয়া জানাবে:
// Subject state
private numberOfProducts: number;
এর পরে, পর্যবেক্ষকদের একটি অ্যারে শুরু করুন। এই অ্যারেটি হল আপনি কিভাবে পর্যবেক্ষকদের ট্র্যাক রাখবেন:
// initializing observers
private observers: Observer[] = [];