Mediator Pattern

Behavioral Design Patterns - জাভায় ডিজাইন প্যাটার্ন (Design Patterns in Java) - Java Technologies

261

Mediator Pattern হল একটি আচারিক (behavioral) ডিজাইন প্যাটার্ন যা একাধিক অবজেক্টের মধ্যে যোগাযোগ পরিচালনার জন্য একটি মধ্যস্থতাকারী (mediator) অবজেক্ট ব্যবহার করে। এর মূল উদ্দেশ্য হল একাধিক অবজেক্টের মধ্যে সরাসরি যোগাযোগ কমানো এবং সেই যোগাযোগের জন্য একটি একক কেন্দ্রীয় স্থান তৈরি করা, যাতে সমস্ত অবজেক্ট একে অপরের সাথে সরাসরি যোগাযোগ না করে, বরং মধ্যস্থতাকারীকে ব্যবহার করে।

Mediator Pattern এর মূল সুবিধা:

  1. Reduced Complexity: একাধিক অবজেক্টের মধ্যে সরাসরি যোগাযোগ কমিয়ে দেয়, ফলে সিস্টেমের জটিলতা কমে।
  2. Centralized Communication: সব ধরনের যোগাযোগ একটি কেন্দ্রীয় জায়গায় চলে আসে, যা কোডের রক্ষণাবেক্ষণ এবং টেস্টিং সহজ করে।
  3. Loose Coupling: অবজেক্টগুলির মধ্যে সম্পর্ক অনেকটাই শিথিল (loose) হয়, কারণ তারা শুধুমাত্র mediator এর মাধ্যমে যোগাযোগ করে।

Mediator Pattern এর ব্যবহার:

  • Chat Systems: যেখানে একাধিক ব্যবহারকারী (users) একে অপরের সাথে যোগাযোগ করতে চান, তবে তারা সরাসরি একে অপরের সাথে যোগাযোগ না করে, একটি mediator (যেমন, সার্ভার) এর মাধ্যমে যোগাযোগ করে।
  • Air Traffic Control: যেখানে বিমানগুলি সরাসরি একে অপরের সাথে যোগাযোগ না করে, তবে air traffic controller এর মাধ্যমে যোগাযোগ করে।

1. Mediator Pattern এর মৌলিক উপাদান

Mediator Pattern তিনটি প্রধান উপাদান নিয়ে গঠিত:

  1. Mediator: একটি ইন্টারফেস যা অবজেক্টগুলির মধ্যে যোগাযোগ পরিচালনা করে।
  2. ConcreteMediator: এটি Mediator ইন্টারফেসের বাস্তবায়ন এবং একাধিক colleague অবজেক্টের মধ্যে যোগাযোগকে নিয়ন্ত্রণ করে।
  3. Colleague: এটি এমন অবজেক্ট যা Mediator এর সাথে যোগাযোগ করে এবং নিজের কাজ সম্পন্ন করার জন্য Mediator কে অবহিত করে।

2. Mediator Pattern এর বাস্তবায়ন

ধরা যাক একটি chat room এর উদাহরণ যেখানে ব্যবহারকারীরা (users) একে অপরের সাথে কথা বলে, তবে তারা সরাসরি একে অপরের সাথে যোগাযোগ না করে, একটি mediator (chat room) এর মাধ্যমে কথোপকথন করে।

উদাহরণ: Mediator Pattern - Chat Room

// Mediator Interface
interface ChatRoomMediator {
    void sendMessage(String message, User user);
    void addUser(User user);
}

// ConcreteMediator
class ChatRoom implements ChatRoomMediator {
    private List<User> users;

    public ChatRoom() {
        this.users = new ArrayList<>();
    }

    @Override
    public void sendMessage(String message, User user) {
        for (User u : users) {
            if (u != user) {
                u.receiveMessage(message);
            }
        }
    }

    @Override
    public void addUser(User user) {
        users.add(user);
    }
}

// Colleague
abstract class User {
    protected ChatRoomMediator mediator;
    protected String name;

    public User(ChatRoomMediator mediator, String name) {
        this.mediator = mediator;
        this.name = name;
    }

    public abstract void sendMessage(String message);
    public abstract void receiveMessage(String message);
}

// ConcreteColleague
class ConcreteUser extends User {

    public ConcreteUser(ChatRoomMediator mediator, String name) {
        super(mediator, name);
    }

    @Override
    public void sendMessage(String message) {
        System.out.println(name + " sends: " + message);
        mediator.sendMessage(message, this);
    }

    @Override
    public void receiveMessage(String message) {
        System.out.println(name + " receives: " + message);
    }
}

public class MediatorPatternExample {
    public static void main(String[] args) {
        ChatRoomMediator mediator = new ChatRoom();

        User user1 = new ConcreteUser(mediator, "Alice");
        User user2 = new ConcreteUser(mediator, "Bob");
        User user3 = new ConcreteUser(mediator, "Charlie");

        mediator.addUser(user1);
        mediator.addUser(user2);
        mediator.addUser(user3);

        user1.sendMessage("Hello Bob!");
        user2.sendMessage("Hi Alice! How are you?");
        user3.sendMessage("Hey everyone!");
    }
}

ব্যাখ্যা:

  1. ChatRoomMediator: এটি একটি ইন্টারফেস যা মেসেজ পাঠানোর জন্য sendMessage এবং ব্যবহারকারী যোগ করার জন্য addUser মেথড সরবরাহ করে।
  2. ChatRoom: এটি ChatRoomMediator এর কনক্রিট ক্লাস, যা সকল ব্যবহারকারীকে পরিচালনা করে এবং মেসেজগুলি একে অপরের কাছে পাঠায়।
  3. User: এটি একটি অ্যাবস্ট্রাক্ট ক্লাস যা sendMessage এবং receiveMessage মেথড সংজ্ঞায়িত করে, যা কনক্রিট ব্যবহারকারীদের মাধ্যমে বাস্তবায়িত হয়।
  4. ConcreteUser: এটি একটি বাস্তব ব্যবহারকারী ক্লাস যা ChatRoom এর মাধ্যমে মেসেজ পাঠায় এবং গ্রহণ করে।

আউটপুট:

Alice sends: Hello Bob!
Bob receives: Hello Bob!
Charlie receives: Hello Bob!
Bob sends: Hi Alice! How are you?
Alice receives: Hi Alice! How are you?
Charlie receives: Hi Alice! How are you?
Charlie sends: Hey everyone!
Alice receives: Hey everyone!
Bob receives: Hey everyone!

3. Mediator Pattern এর সুবিধা

  1. Loose Coupling: Mediator Pattern অবজেক্টগুলির মধ্যে যোগাযোগের জন্য একটি কেন্দ্রীয় স্থান ব্যবহার করে, যার ফলে অবজেক্টগুলির মধ্যে সরাসরি যোগাযোগ কমে যায় এবং শিথিল সম্পর্ক তৈরি হয়।
  2. Simplified Communication: একাধিক অবজেক্টের মধ্যে যোগাযোগ পরিচালনা করতে mediator ব্যবহার করা সহজ হয়।
  3. Centralized Control: যোগাযোগের সমস্ত লজিক একটি কেন্দ্রীয় স্থানে থাকে, যা রক্ষণাবেক্ষণ এবং কোডের পরিবর্তন সহজ করে তোলে।

4. Mediator Pattern এর বাস্তব প্রয়োগ

Mediator Pattern বিভিন্ন ক্ষেত্রে ব্যবহৃত হয় যেখানে একাধিক অবজেক্টের মধ্যে যোগাযোগে কোনো ধরনের জটিলতা এবং শিথিল সম্পর্ক তৈরি করতে হয়। কিছু বাস্তব প্রয়োগের উদাহরণ:

  • Chat Applications: যেখানে একাধিক ব্যবহারকারী একে অপরের সাথে যোগাযোগ করতে পারে, তবে তারা সরাসরি একে অপরের সাথে যোগাযোগ না করে, mediator (chat server) এর মাধ্যমে যোগাযোগ করে।
  • UI Components: যেখানে বিভিন্ন UI কম্পোনেন্ট (যেমন টেক্সট বক্স, বাটন, চেকবক্স) একে অপরের সাথে যোগাযোগ করে এবং mediator (কন্ট্রোলার) সমস্ত ইন্টারঅ্যাকশন পরিচালনা করে।
  • Air Traffic Control: বিমানগুলির মধ্যে যোগাযোগ পরিচালনা করতে একটি mediator (air traffic controller) ব্যবহার করা হয়।

Mediator Pattern হল একটি শক্তিশালী ডিজাইন প্যাটার্ন যা একাধিক অবজেক্টের মধ্যে যোগাযোগকে সহজ এবং শিথিল করে। এটি যোগাযোগের জন্য একটি একক কেন্দ্রীয় অবজেক্ট ব্যবহার করে এবং কোডের রক্ষণাবেক্ষণ এবং উন্নয়নকে আরও সহজ করে তোলে। Java তে এটি খুব সহজেই বাস্তবায়ন করা যায় এবং এটি chat systems, UI components, air traffic control, এবং অন্যান্য জটিল সিস্টেমে কার্যকরভাবে ব্যবহার করা যেতে পারে।

Content added By
Promotion

Are you sure to start over?

Loading...