বিহেভিয়োরাল প্যাটার্ন: অবজার্ভার, স্ট্রাটেজি

ডিজাইন প্যাটার্নস (Design Patterns) - কম্পিউটার প্রোগ্রামিং ফান্ডামেন্টাল (Computer Programming Fundamentals) - Computer Science

178


বিহেভিয়োরাল প্যাটার্ন হল সফটওয়্যার ডিজাইন প্যাটার্নের একটি শ্রেণী যা অবজেক্টগুলির মধ্যে যোগাযোগ এবং আচরণকে নির্ধারণ করে। এগুলি অবজেক্টের মধ্যে সম্পর্ক এবং তাদের আচরণকে পরিচালনা করার জন্য ব্যবহৃত হয়। এখানে দুটি জনপ্রিয় বিহেভিয়োরাল প্যাটার্ন আলোচনা করা হলো: অবজার্ভার (Observer) এবং স্ট্রাটেজি (Strategy) প্যাটার্ন।

১. অবজার্ভার প্যাটার্ন (Observer Pattern)

বিবরণ: অবজার্ভার প্যাটার্ন হল একটি ডিজাইন প্যাটার্ন যা একটি একক বিষয় (subject) এবং একাধিক পর্যবেক্ষক (observers) এর মধ্যে সম্পর্ক স্থাপন করে। যখন বিষয়ের অবস্থা পরিবর্তিত হয়, তখন এটি স্বয়ংক্রিয়ভাবে তার পর্যবেক্ষকদের আপডেট করে।

ব্যবহার:

  • বিভিন্ন উপাদানের মধ্যে সম্পর্ক বজায় রাখা, যেখানে এক উপাদানের পরিবর্তন অন্য উপাদানের উপর প্রভাব ফেলে।
  • UI ফ্রেমওয়ার্কে ইভেন্ট ব্যবস্থাপনায় ব্যবহার করা হয়।

উদাহরণ (পাইথনে):

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("Subclass must implement abstract method")

class ConcreteObserver(Observer):
    def __init__(self, name):
        self.name = name

    def update(self):
        print(f"{self.name} has been notified.")

# ব্যবহার
subject = Subject()
observer1 = ConcreteObserver("Observer 1")
observer2 = ConcreteObserver("Observer 2")

subject.attach(observer1)
subject.attach(observer2)

subject.notify()  # আউটপুট: Observer 1 has been notified. 
                  # আউটপুট: Observer 2 has been notified.

২. স্ট্রাটেজি প্যাটার্ন (Strategy Pattern)

বিবরণ: স্ট্রাটেজি প্যাটার্ন হল একটি ডিজাইন প্যাটার্ন যা একটি এলগরিদমকে একটি ক্লাসের পরিবর্তে অবজেক্টে রূপান্তর করে। এটি বিভিন্ন এলগরিদমকে নির্দিষ্ট ইন্টারফেসের মাধ্যমে একত্রিত করতে সাহায্য করে, এবং প্রয়োজনে এলগরিদম পরিবর্তন করার সুযোগ দেয়।

ব্যবহার:

  • বিভিন্ন অ্যালগরিদমের মধ্যে নির্বাচনের জন্য এবং তাদের পরিবর্তনযোগ্যতা বাড়ানোর জন্য ব্যবহার করা হয়।
  • ক্লাসের আচরণ পরিবর্তনের প্রয়োজন হলে এটি কার্যকরী।

উদাহরণ (পাইথনে):

class Strategy:
    def execute(self):
        raise NotImplementedError("Subclass must implement abstract method")

class ConcreteStrategyA(Strategy):
    def execute(self):
        print("Executing Strategy A")

class ConcreteStrategyB(Strategy):
    def execute(self):
        print("Executing Strategy B")

class Context:
    def __init__(self, strategy: Strategy):
        self._strategy = strategy

    def set_strategy(self, strategy: Strategy):
        self._strategy = strategy

    def execute_strategy(self):
        self._strategy.execute()

# ব্যবহার
context = Context(ConcreteStrategyA())
context.execute_strategy()  # আউটপুট: Executing Strategy A

context.set_strategy(ConcreteStrategyB())
context.execute_strategy()  # আউটপুট: Executing Strategy B

উপসংহার

অবজার্ভার প্যাটার্ন এবং স্ট্রাটেজি প্যাটার্ন হল দুটি জনপ্রিয় বিহেভিয়োরাল প্যাটার্ন যা সফটওয়্যার ডিজাইনকে উন্নত এবং সুরক্ষিত করে। অবজার্ভার প্যাটার্ন একাধিক অবজেক্টের মধ্যে অবস্থা পরিবর্তনের জন্য একটি কার্যকরী উপায় প্রদান করে, যখন স্ট্রাটেজি প্যাটার্ন বিভিন্ন এলগরিদমকে আলাদা করে পরিচালনা করার ক্ষমতা দেয়। এই প্যাটার্নগুলি সফটওয়্যার ডেভেলপমেন্টে কার্যকারিতা, মডুলারিটি এবং রক্ষণাবেক্ষণ সুবিধা প্রদান করে।

Promotion

Are you sure to start over?

Loading...