উদাহরণ: Singleton, Factory, Observer প্যাটার্ন

সফটওয়্যার ডিজাইন প্যাটার্নস (Software Design Patterns) - প্রোগ্রামিং মেথডলোজি (Programming Methodologies) - Computer Science

266

নিচে Singleton, Factory, এবং Observer ডিজাইন প্যাটার্নের সংজ্ঞা, বৈশিষ্ট্য এবং কোড উদাহরণ উল্লেখ করা হলো।

১. Singleton Pattern

সংজ্ঞা

Singleton প্যাটার্ন নিশ্চিত করে যে একটি ক্লাসের শুধুমাত্র একটি ইনস্ট্যান্স তৈরি করা হবে এবং সেই ইনস্ট্যান্সটি গ্লোবালি অ্যাক্সেসযোগ্য থাকবে।

বৈশিষ্ট্য

  • শুধুমাত্র একটি ইনস্ট্যান্স।
  • গ্লোবাল অ্যাক্সেস পয়েন্ট।
  • Lazy initialization।

কোড উদাহরণ (Python):

class Singleton:
    _instance = None

    def __new__(cls):
        if cls._instance is None:
            cls._instance = super(Singleton, cls).__new__(cls)
        return cls._instance

# ব্যবহার
s1 = Singleton()
s2 = Singleton()

print(s1 is s2)  # Output: True (দুইটি ইনস্ট্যান্স একই)

২. Factory Method Pattern

সংজ্ঞা

Factory Method প্যাটার্ন একটি অবজেক্ট তৈরি করার জন্য একটি ইন্টারফেস প্রদান করে, কিন্তু এটি সাবক্লাসে কোন ক্লাসের ইনস্ট্যান্স তৈরি করতে হবে তা নির্ধারণ করার জন্য উপায় দেয়।

বৈশিষ্ট্য

  • অবজেক্ট তৈরি করার জন্য একাধিক ক্লাসে বিচ্ছিন্নতা।
  • ইনস্ট্যান্স তৈরির সিদ্ধান্ত সাবক্লাসে স্থানান্তরিত হয়।

কোড উদাহরণ (Python):

class Product:
    def operation(self):
        raise NotImplementedError("Subclasses must implement this method.")

class ConcreteProductA(Product):
    def operation(self):
        return "Result of ConcreteProductA"

class ConcreteProductB(Product):
    def operation(self):
        return "Result of ConcreteProductB"

class Creator:
    def factory_method(self):
        raise NotImplementedError("Subclasses must implement this method.")

class ConcreteCreatorA(Creator):
    def factory_method(self):
        return ConcreteProductA()

class ConcreteCreatorB(Creator):
    def factory_method(self):
        return ConcreteProductB()

# ব্যবহার
creator_a = ConcreteCreatorA()
product_a = creator_a.factory_method()
print(product_a.operation())  # Output: Result of ConcreteProductA

creator_b = ConcreteCreatorB()
product_b = creator_b.factory_method()
print(product_b.operation())  # Output: Result of ConcreteProductB

৩. Observer Pattern

সংজ্ঞা

Observer প্যাটার্ন একাধিক অবজেক্টের মধ্যে একটি একক অবজেক্টের অবস্থা পরিবর্তিত হলে তাদেরকে অবহিত করার জন্য ব্যবহৃত হয়। এটি একটি সম্পর্ক গঠন করে যেখানে একটি সাবজেক্ট এবং একাধিক অবজেক্ট (অবজারভার) থাকে।

বৈশিষ্ট্য

  • একাধিক অবজেক্টকে আপডেট করার ক্ষমতা।
  • সাবজেক্ট এবং অবজারভারের মধ্যে একাধিক সম্পর্ক।

কোড উদাহরণ (Python):

class Subject:
    def __init__(self):
        self._observers = []

    def attach(self, observer):
        self._observers.append(observer)

    def detach(self, observer):
        self._observers.remove(observer)

    def notify(self):
        for observer in self._observers:
            observer.update()

class Observer:
    def update(self):
        raise NotImplementedError("Subclasses must implement this method.")

class ConcreteObserverA(Observer):
    def update(self):
        print("ConcreteObserverA: State updated.")

class ConcreteObserverB(Observer):
    def update(self):
        print("ConcreteObserverB: State updated.")

# ব্যবহার
subject = Subject()
observer_a = ConcreteObserverA()
observer_b = ConcreteObserverB()

subject.attach(observer_a)
subject.attach(observer_b)

subject.notify()
# Output:
# ConcreteObserverA: State updated.
# ConcreteObserverB: State updated.

উপসংহার

এই উদাহরণগুলি Singleton, Factory, এবং Observer ডিজাইন প্যাটার্নের মৌলিক ধারণা এবং প্রয়োগ বোঝাতে সহায়ক। এই প্যাটার্নগুলি সফটওয়্যার ডিজাইন এবং উন্নয়নের সময় সমস্যার কার্যকর সমাধান প্রদান করে।

Content added By
Promotion

Are you sure to start over?

Loading...