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