/**
* @author: ÌØÖÖ±ø¡ªAK47
* @´´½¨Ê±¼ä£º2012-7-3 ÏÂÎç03:39:43
*
* @Àà˵Ã÷ £º¾ßÌåµ÷Í£ÕßÀà
*/
public class MainBoard implements Mediator {
// ÐèÒªÖªµÀÒª½»»¥µÄͬÊÂÀࡪ¡ª¹âÇýÀà
private CDDriver cdDriver = null;
// ÐèÒªÖªµÀÒª½»»¥µÄͬÊÂÀࡪ¡ªCPUÀà
private CPU cpu = null;
// ÐèÒªÖªµÀÒª½»»¥µÄͬÊÂÀࡪ¡ªÏÔ¿¨Àà
private VideoCard videoCard = null;
// ÐèÒªÖªµÀÒª½»»¥µÄͬÊÂÀࡪ¡ªÉù¿¨Àà
private SoundCard soundCard = null;
public void setCdDriver(CDDriver cdDriver) {
this.cdDriver = cdDriver;
}
public void setCpu(CPU cpu) {
this.cpu = cpu;
}
public void setVideoCard(VideoCard videoCard) {
this.videoCard = videoCard;
}
public void setSoundCard(SoundCard soundCard) {
this.soundCard = soundCard;
}
@Override
public void changed(Colleague c) {
if (c instanceof CDDriver) {
// ±íʾ¹âÇý¶ÁÈ¡Êý¾ÝÁË
this.opeCDDriverReadData((CDDriver) c);
} else if (c instanceof CPU) {
this.opeCPU((CPU) c);
}
}
/**
* ´¦Àí¹âÇý¶ÁÈ¡Êý¾ÝÒÔºóÓëÆäËû¶ÔÏóµÄ½»»¥
*/
private void opeCDDriverReadData(CDDriver cd) {
// ÏÈ»ñÈ¡¹âÇý¶ÁÈ¡µÄÊý¾Ý
String data = cd.getData();
// °ÑÕâЩÊý¾Ý´«µÝ¸øCPU½øÐд¦Àí
cpu.executeData(data);
}
/**
* ´¦ÀíCPU´¦ÀíÍêÊý¾ÝºóÓëÆäËû¶ÔÏóµÄ½»»¥
*/
private void opeCPU(CPU cpu) {
// ÏÈ»ñÈ¡CPU´¦ÀíºóµÄÊý¾Ý
String videoData = cpu.getVideoData();
String soundData = cpu.getSoundData();
// °ÑÕâЩÊý¾Ý´«µÝ¸øÏÔ¿¨ºÍÉù¿¨Õ¹Ê¾³öÀ´
videoCard.showData(videoData);
soundCard.soundData(soundData);
}
}
package com.bankht.Mediator;
/**
* @author: ÌØÖÖ±ø¡ªAK47
* @´´½¨Ê±¼ä£º2012-7-3 ÏÂÎç03:39:43
*
* @Àà˵Ã÷ £º¾ßÌåµ÷Í£ÕßÀà
*/
public class MainBoard implements Mediator {
// ÐèÒªÖªµÀÒª½»»¥µÄͬÊÂÀࡪ¡ª¹âÇýÀà
private CDDriver cdDriver = null;
// ÐèÒªÖªµÀÒª½»»¥µÄͬÊÂÀࡪ¡ªCPUÀà
private CPU cpu = null;
// ÐèÒªÖªµÀÒª½»»¥µÄͬÊÂÀࡪ¡ªÏÔ¿¨Àà
private VideoCard videoCard = null;
// ÐèÒªÖªµÀÒª½»»¥µÄͬÊÂÀࡪ¡ªÉù¿¨Àà
private SoundCard soundCard = null;
public void setCdDriver(CDDriver cdDriver) {
this.cdDriver = cdDriver;
}
public void setCpu(CPU cpu) {
this.cpu = cpu;
}
public void setVideoCard(VideoCard videoCard) {
this.videoCard = videoCard;
}
public void setSoundCard(SoundCard soundCard) {
this.soundCard = soundCard;
}
@Override
public void changed(Colleague c) {
if (c instanceof CDDriver) {
// ±íʾ¹âÇý¶ÁÈ¡Êý¾ÝÁË
this.opeCDDriverReadData((CDDriver) c);
} else if (c instanceof CPU) {
this.opeCPU((CPU) c);
}
}
/**
* ´¦Àí¹âÇý¶ÁÈ¡Êý¾ÝÒÔºóÓëÆäËû¶ÔÏóµÄ½»»¥
*/
private void opeCDDriverReadData(CDDriver cd) {
// ÏÈ»ñÈ¡¹âÇý¶ÁÈ¡µÄÊý¾Ý
String data = cd.getData();
// °ÑÕâЩÊý¾Ý´«µÝ¸øCPU½øÐд¦Àí
cpu.executeData(data);
}
/**
* ´¦ÀíCPU´¦ÀíÍêÊý¾ÝºóÓëÆäËû¶ÔÏóµÄ½»»¥
*/
private void opeCPU(CPU cpu) {
// ÏÈ»ñÈ¡CPU´¦ÀíºóµÄÊý¾Ý
String videoData = cpu.getVideoData();
String soundData = cpu.getSoundData();
// °ÑÕâЩÊý¾Ý´«µÝ¸øÏÔ¿¨ºÍÉù¿¨Õ¹Ê¾³öÀ´
videoCard.showData(videoData);
soundCard.soundData(soundData);
}
}
¡¡¡¡¿Í»§¶ËÀà
[java]
package com.bankht.Mediator;
/**
* @author: ÌØÖÖ±ø¡ªAK47
* @´´½¨Ê±¼ä£º2012-7-3 ÏÂÎç03:40:07
*
* @Àà˵Ã÷ £º¿Í»§¶ËÀà
*/
public class Client {
public static void main(String[] args) {
// ´´½¨µ÷Í£Õß¡ª¡ªÖ÷°å
MainBoard mediator = new MainBoard();
// ´´½¨Í¬ÊÂÀà
CDDriver cd = new CDDriver(mediator);
CPU cpu = new CPU(mediator);
VideoCard vc = new VideoCard(mediator);
SoundCard sc = new SoundCard(mediator);
// Èõ÷Í£ÕßÖªµÀËùÓÐͬÊÂ
mediator.setCdDriver(cd);
mediato