设计模式-适配器模式
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视频
推荐阅读
- --木木--|--木木-- 第二课作业#翼丰会(每日一淘6+1实战裂变被动引流# 6+1模式)
- 设计模式-代理模式-Proxy
- 【译】Rails|【译】Rails 5.0正式发布(Action Cable,API模式等)
- java静态代理模式
- VueX(Vuex|VueX(Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式)
- Kotlin基础(10)-代理模式在kotlin中的使用
- 长谈的确是这个时代需要的一种模式
- 《读_Head_First_有感》_“命令模式”
- 洗洗睡了|洗洗睡了 | 休息的时候,千万注意切换你的行为模式
- 设计模式【15】--从审批流中学习责任链模式