1. 类适配器模式
目标角色,这里假如规定了可以播放视频的格式
public interface PlayerFormat {
public void playerMP4();
public void playerAVI();
public void playerRMVB();
}
当前的播放器只能播放MP4格式的视频
public class Player {
public void playerMP4() {
System.out.println("播放MP4视频");
};
}
使用适配器继承了Player,又实现了PlayerFormat的接口,现在这个视频器就能播放MP4、AVI、RMVB三种格式的视频了
public class PlayerAdapter extends Player implements PlayerFormat{
@Override
public void playerAVI() {
System.out.println("播放AVI视频");
}
@Override
public void playerRMVB() {
System.out.println("播放RMVB视频");
}
}
测试
PlayerAdapter player = new PlayerAdapter();
player.playerMP4();
player.playerAVI();
player.playerRMVB();
输出
播放MP4视频
播放AVI视频
播放RMVB视频
2. 对象适配器模式
对象适配器模式与类适配器就adapter不同,具体如下代码
public class PlayerAdapter2 implements PlayerFormat{
private Player player;
public PlayerAdapter2(Player player) {
super();
this.player = player;
}
@Override
public void playerMP4() {
player.playerMP4();
}
@Override
public void playerAVI() {
System.out.println("播放AVI视频");
}
@Override
public void playerRMVB() {
System.out.println("播放RMVB视频");
}
}
测试
PlayerAdapter2 player = new PlayerAdapter2(new Player());
player.playerMP4();
player.playerAVI();
player.playerRMVB();
输出
播放MP4视频
播放AVI视频
播放RMVB视频