Java设计模式之16——中介者模式(1)

1 创建一个抽象的中介者Mediator

package mediatorpattern2;

public abstract class Mediator {

    public abstract void changed(Colleague c);
}
 

2 创建一个抽象的同事对象

package mediatorpattern2;

public abstract class Colleague {
    //每一个同事 都要知道中介者
    protected Mediator mediator;

    public Colleague(Mediator mediator) {
        super();
        this.mediator = mediator;
    } 
}
 

3 创建实体类的同事

获取外部原始数据的CD设备类:

package mediatorpattern2;

public class CdDevice extends Colleague{

    private String data;
    public CdDevice(Mediator mediator) {
        super(mediator);
    }

    public String read(){
        return data;
    }
    public void load(){
        data = "视频数据,音频数据";
        //通知中介者
        mediator.changed(this);
    }
}
 

处理音视频数据的CPU:

package mediatorpattern2;

public class CPU extends Colleague{

    private String dataVideo, dataSound;
    public CPU(Mediator mediator) {
        super(mediator);
    }
    public String getDataVideo() {
        return dataVideo;
    }
    public String getDataSound() {
        return dataSound;
    }
    
    public void decodeData(String data){
        //分割视频数据 和音频数据
        String[] tmp = data.split(",");
        dataVideo = tmp[0];
        dataSound = tmp[1];
        //通知中介者
        mediator.changed(this);
    }

}

处理视频数据的GraphicsCard:

package mediatorpattern2;

public class GraphicsCard extends Colleague{

    public GraphicsCard(Mediator mediator) {
        super(mediator);
    }

    public void palyVideo(String data){
         System.out.println("播放视频 : "+data);
    }
}
 

4 客户端测试类:

package mediatorpattern2;

public class Client {

    public static void main(String[] args) {
        //构造主板
        MainBoard mainBoard = new MainBoard();
        //分别构造各个零件
        CdDevice cdDevice = new CdDevice(mainBoard);
        CPU cpu = new CPU(mainBoard);
        GraphicsCard graphicsCard = new GraphicsCard(mainBoard);
        SoundCard soundCard = new SoundCard(mainBoard);
        //中介者将各个零件安装到主板
        mainBoard.setCdDevice(cdDevice);
        mainBoard.setCpu(cpu);
        mainBoard.setGraphicsCard(graphicsCard);
        mainBoard.setSoundCard(soundCard);
        
        //CD设备开始播放
        cdDevice.load();
    }
}
 

5 参考的输出结果:

播放音频 : 音频数据
播放视频 : 视频数据

猜你喜欢

转载自blog.csdn.net/frank_develpoer/article/details/81509981