Click here to watch in Youtube : https://www.youtube.com/watch?v=bayJB37kVR0
Click the below Image to Enlarge
| Mediator Design pattern - Implementation [Facebook] | 
| Mediator Design pattern - Implementation [Facebook] - Class Diagram | 
FacebookGroupMediator.java
public interface FacebookGroupMediator
{
  public void sendMessage( String msg, User user );
  void registerUser( User user );
}
FacebookGroupMediatorImpl.java
import java.util.ArrayList;
import java.util.List;
public class FacebookGroupMediatorImpl implements FacebookGroupMediator
{
  private List<User> users;
  public FacebookGroupMediatorImpl()
  {
    this.users = new ArrayList<User>();
  }
  @Override
  public void registerUser( User user )
  {
    this.users.add(user);
  }
  @Override
  public void sendMessage( String msg, User user )
  {
    for( User u : this.users )
    {
      // message should not be received by the user sending it
      if( u != user )
      {
        u.receive(msg);
      }
    }
  }
}
User.java
public abstract class User
{
  protected FacebookGroupMediator mediator;
  protected String       name;
  public User( FacebookGroupMediator mediator, String name )
  {
    this.mediator = mediator;
    this.name = name;
  }
  public abstract void send( String msg );
  public abstract void receive( String msg );
}
UserImpl.java
public class UserImpl extends User
{
  public UserImpl( FacebookGroupMediator mediator, String name )
  {
    super(mediator, name);
  }
  @Override
  public void send( String msg )
  {
    System.out.println(this.name + ": Sending Message=" + msg+"\n");
    mediator.sendMessage(msg, this);
  }
  @Override
  public void receive( String msg )
  {
    System.out.println(this.name + ": Received Message:" + msg);
  }
}
FacebookClient.java
public class FacebookClient
{
  public static void main( String[] args )
  {
    FacebookGroupMediator facebookMediator = new FacebookGroupMediatorImpl();
    User dave = new UserImpl(facebookMediator, "Dave");
    User ram = new UserImpl(facebookMediator, "Ram");
    User raj = new UserImpl(facebookMediator, "Raj");
    User anu = new UserImpl(facebookMediator, "Anu");
    User rahul = new UserImpl(facebookMediator, "Rahul");
    User steve = new UserImpl(facebookMediator, "Steve");
    User raju = new UserImpl(facebookMediator, "Raju");
    facebookMediator.registerUser(dave);
    facebookMediator.registerUser(ram);
    facebookMediator.registerUser(raj);
    facebookMediator.registerUser(anu);
    facebookMediator.registerUser(rahul);
    facebookMediator.registerUser(steve);
    facebookMediator.registerUser(raju);
    dave.send("ramj2ee.blogspot.com - this blog is very good blog ");
    System.out.println("##############################################################################");
    ram.send("what is Design Patterns? Please explain ");
  }
}
Output
Dave: Sending Message=ramj2ee.blogspot.com - this blog is very good blog 
Ram: Received Message:ramj2ee.blogspot.com - this blog is very good blog 
Raj: Received Message:ramj2ee.blogspot.com - this blog is very good blog 
Anu: Received Message:ramj2ee.blogspot.com - this blog is very good blog 
Rahul: Received Message:ramj2ee.blogspot.com - this blog is very good blog 
Steve: Received Message:ramj2ee.blogspot.com - this blog is very good blog 
Raju: Received Message:ramj2ee.blogspot.com - this blog is very good blog 
##############################################################################
Ram: Sending Message=what is Design Patterns? Please explain 
Dave: Received Message:what is Design Patterns? Please explain 
Raj: Received Message:what is Design Patterns? Please explain 
Anu: Received Message:what is Design Patterns? Please explain 
Rahul: Received Message:what is Design Patterns? Please explain 
Steve: Received Message:what is Design Patterns? Please explain 
Raju: Received Message:what is Design Patterns? Please explain 
 


 
No comments:
Post a Comment