Mediator

One of the behavioral design patterns, allowing objects to communicate with each other with the help of a mediator.
the mediator promotes loose coupling by preventing objects from having direct dependencies on each other. Instead, they use mediators to communicate with each other.

Let’s understand this by implementing chatroom where different users chat with each other

Mediator

public interface ChatMediator { public void sendMessage(User user, String message); public void addUser(User user);
} public class ChatRoomMediator implements ChatMediator { private List<User> users; public ChatRoomMediator(){ this.users = new ArrayList<>(); } @Override public void addUser(User u){ users.add(u); } @Override public void sendMessage(User u, String message){ for(User user : users){ if(user!=u){ user.receive(message); } } }
} 
Enter fullscreen mode
Exit fullscreen mode

User

public class User { ChatMediator mediator; private String name; public User(String n,ChatMediator m){ this.name = n; this.mediator = m; } public String getName(){ return this.name; } public void send(String message){ System.out.println(this.name+":sent:"+message); mediator.sendMessage(this,message); } public void receive(String message){ System.out.println(this.name+":received:"+ message); }
}
Enter fullscreen mode
Exit fullscreen mode

Main

public class Main { public static void main(String args[]){ ChatMediator mediator = new ChatRoomMediator(); User user1 = new User("prashant",mediator); User user2 = new User("sandeep", mediator); User user3 = new User("ajay", mediator); mediator.addUser(user3); mediator.addUser(user2); mediator.addUser(user1); user1.send("Hi All"); user2.send("Hi Prashant"); user3.send("Hi..."); }
}
Enter fullscreen mode
Exit fullscreen mode

Output:

prashant:sent:Hi All
ajay:received:Hi All
sandeep:received:Hi All
sandeep:sent:Hi Prashant
ajay:received:Hi Prashant
prashant:received:Hi Prashant
ajay:sent:Hi...
sandeep:received:Hi...
prashant:received:Hi...
Enter fullscreen mode
Exit fullscreen mode

Key points

  • User objects are loosely coupled, i.e even if some users are deleted or modified it will not affect any other user
  • Mediator is the middle man between all users

Discover more from Coursity

Subscribe to get the latest posts sent to your email.

Leave a Comment

Your email address will not be published. Required fields are marked *

Discover more from Coursity

Subscribe now to keep reading and get access to the full archive.

Continue reading

Scroll to Top