需要中介者对象作为通信控制平台 所操控的抽象对象
package mediator;
public abstract class DreamGirl {
//通知者的一个引用
protected Mediator mediator;
protected String name;
//中介者调用的方法,用来将别人发的消息通知给自己
public abstract void notifyMessage(String message);
//通过对方姓名发送信息
public void Send(String message,String to_name) {
//委托给中介者,并将自己作为参数传给中介者
this.mediator.send(message, this, to_name);
}
public Mediator getMediator() {
return mediator;
}
public void setMediator(Mediator mediator) {
this.mediator = mediator;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package mediator;
public abstract class DreamGirl {
//通知者的一个引用
protected Mediator mediator;
protected String name;
//中介者调用的方法,用来将别人发的消息通知给自己
public abstract void notifyMessage(String message);
//通过对方姓名发送信息
public void Send(String message,String to_name) {
//委托给中介者,并将自己作为参数传给中介者
this.mediator.send(message, this, to_name);
}
public Mediator getMediator() {
return mediator;
}
public void setMediator(Mediator mediator) {
this.mediator = mediator;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
具体对象的实现
public class BeautifulGirl extends DreamGirl {
public void notifyMessage(String message) {
System.out.println("BeautifulGirl 得到消息:"+ message);
}
}
public class LivelyGirl extends DreamGirl {
public void notifyMessage(String message) {
System.out.println("LivelyGirl 得到消息:"+ message);
}
}
public class BeautifulGirl extends DreamGirl {
public void notifyMessage(String message) {
System.out.println("BeautifulGirl 得到消息:"+ message);
}
}
public class LivelyGirl extends DreamGirl {
public void notifyMessage(String message) {
System.out.println("LivelyGirl 得到消息:"+ message);
}
}
中介者对象接口
package mediator;
//中介者
public interface Mediator {
public abstract void send(String message,DreamGirl girl,String to_name);
}
package mediator;
//中介者
public interface Mediator {
public abstract void send(String message,DreamGirl girl,String to_name);
}
通信控制所需的具体中介者实现
package mediator;
import java.util.*;
import java.util.Map.Entry;
/**
* 用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地相互引用,
* 从而使其耦合松散,而且可以独立的改变它们之间的交互。
*
* @author Administrator
*
*/
public class Boy implements Mediator {
/*private BeautifulGirl beautifulGirl;
private LivelyGirl livelyGirl;*/
private Map<String,DreamGirl> maps =null;
Boy(){
maps= new HashMap<String,DreamGirl>();
}
public void put(String name,DreamGirl dg){
maps.put(name, dg);
}
public void put( DreamGirl dg){
maps.put(dg.getName(), dg);
}
@SuppressWarnings("unchecked")
public void send(String message, DreamGirl girl,String to_name) {
//这边根据发送姓名再通过循环girl寻找指定的对象,再通过对象的notifyMessage方法通知信息
Iterator iter = maps.entrySet().iterator();
while( iter.hasNext() ){
Map.Entry<String, DreamGirl> entrys= (Entry<String, DreamGirl>) iter.next();
if(entrys.getKey().endsWith(girl.getName())){
DreamGirl res = entrys.getValue();
res.notifyMessage(message);
}
}
/*if(girl.equals(beautifulGirl)){
livelyGirl.notifyMessage(message);
}else if(girl.equals(livelyGirl)){
beautifulGirl.notifyMessage(message);
}
*/
}
/* public BeautifulGirl getBeautifulGirl() {
return beautifulGirl;
}
public void setBeautifulGirl(BeautifulGirl beautifulGirl) {
this.beautifulGirl = beautifulGirl;
}
public LivelyGirl getLivelyGirl() {
return livelyGirl;
}
public void setLivelyGirl(LivelyGirl livelyGirl) {
this.livelyGirl = livelyGirl;
}
*/
public static void main(String[]args){
Boy ysen =new Boy();
BeautifulGirl bg = new BeautifulGirl();
LivelyGirl lg= new LivelyGirl();
bg.setName("wang_fei");
lg.setName("zhou_xun");
//让中介者认识这些girl
ysen.put(bg);
ysen.put(lg);
//让girl 认识这个中介者
bg.setMediator(ysen);
lg.setMediator(ysen);
bg.Send("看见我老公了没啊,长的很帅的那种!","wang_fei" );
lg.Send("靠!不要脸的越来越多了!","zhou_xun");
/* Boy ysen =new Boy();
BeautifulGirl bg = new BeautifulGirl();
LivelyGirl lg= new LivelyGirl();
//让girl 认识这个中介者
bg.setMediator(ysen);
lg.setMediator(ysen);
//让中介者认识这些girl
ysen.setBeautifulGirl(bg);
ysen.setLivelyGirl(lg);
bg.Send("看见我老公了没啊,长的很帅的那种!");
lg.Send("靠!不要脸的越来越多了!");
*/
}
}
package mediator;
import java.util.*;
import java.util.Map.Entry;
/**
* 用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地相互引用,
* 从而使其耦合松散,而且可以独立的改变它们之间的交互。
*
* @author Administrator
*
*/
public class Boy implements Mediator {
/*private BeautifulGirl beautifulGirl;
private LivelyGirl livelyGirl;*/
private Map<String,DreamGirl> maps =null;
Boy(){
maps= new HashMap<String,DreamGirl>();
}
public void put(String name,DreamGirl dg){
maps.put(name, dg);
}
public void put( DreamGirl dg){
maps.put(dg.getName(), dg);
}
@SuppressWarnings("unchecked")
public void send(String message, DreamGirl girl,String to_name) {
//这边根据发送姓名再通过循环girl寻找指定的对象,再通过对象的notifyMessage方法通知信息
Iterator iter = maps.entrySet().iterator();
while( iter.hasNext() ){
Map.Entry<String, DreamGirl> entrys= (Entry<String, DreamGirl>) iter.next();
if(entrys.getKey().endsWith(girl.getName())){
DreamGirl res = entrys.getValue();
res.notifyMessage(message);
}
}
/*if(girl.equals(beautifulGirl)){
livelyGirl.notifyMessage(message);
}else if(girl.equals(livelyGirl)){
beautifulGirl.notifyMessage(message);
}
*/
}
/* public BeautifulGirl getBeautifulGirl() {
return beautifulGirl;
}
public void setBeautifulGirl(BeautifulGirl beautifulGirl) {
this.beautifulGirl = beautifulGirl;
}
public LivelyGirl getLivelyGirl() {
return livelyGirl;
}
public void setLivelyGirl(LivelyGirl livelyGirl) {
this.livelyGirl = livelyGirl;
}
*/
public static void main(String[]args){
Boy ysen =new Boy();
BeautifulGirl bg = new BeautifulGirl();
LivelyGirl lg= new LivelyGirl();
bg.setName("wang_fei");
lg.setName("zhou_xun");
//让中介者认识这些girl
ysen.put(bg);
ysen.put(lg);
//让girl 认识这个中介者
bg.setMediator(ysen);
lg.setMediator(ysen);
bg.Send("看见我老公了没啊,长的很帅的那种!","wang_fei" );
lg.Send("靠!不要脸的越来越多了!","zhou_xun");
/* Boy ysen =new Boy();
BeautifulGirl bg = new BeautifulGirl();
LivelyGirl lg= new LivelyGirl();
//让girl 认识这个中介者
bg.setMediator(ysen);
lg.setMediator(ysen);
//让中介者认识这些girl
ysen.setBeautifulGirl(bg);
ysen.setLivelyGirl(lg);
bg.Send("看见我老公了没啊,长的很帅的那种!");
lg.Send("靠!不要脸的越来越多了!");
*/
}
}
BeautifulGirl 得到消息:看见我老公了没啊,长的很帅的那种!
LivelyGirl 得到消息:靠!不要脸的越来越多了!
|