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 参考的输出结果:

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值