当前位置: 首页 > news >正文

临沂网站推广排名丽江网站开发找千素网

临沂网站推广排名,丽江网站开发找千素网,wordpress用户私信功能,wordpress添加过滤器适配器模式 适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。 优缺点 优点: 单一职责原则。你可以将接口或数据转换代码从程序主要业务逻辑中分…

适配器模式

适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。

优缺点

优点:
  • 单一职责原则。你可以将接口或数据转换代码从程序主要业务逻辑中分离。
  • 开闭原则。只要客户端代码通过客户端接口与适配器进行交互, 你就能在不修改现有客户端代码的情况下在程序中添加新类型的适配器。
缺点
  • 代码整体复杂度增加, 因为你需要新增一系列接口和类。 有时直接更改服务类使其与其他代码兼容会更简单。

应用实例

普通音频播放器设备只能播放 mp3 文件,通过使用一个更高级的音频播放器来播放 vlc 和 mp4 文件。

代码实现

类适配器:基于继承方式

  1. 为普通音频播放器和更高级的音频播放器创建接口。
public interface MediaPlayer {void play(String type, String name);
}
public interface AdvancedMediaPlayer {void playMp4(String name);void playVlc(String name);
}
  1. 创建 AdvancedMediaPlayer 接口的实现类。
public class AdvancedPlayer implements AdvancedMediaPlayer {@Overridepublic void playMp4(String name) {System.out.println("play mp4 " + name);}@Overridepublic void playVlc(String name) {System.out.println("play vlc " + name);}
}
  1. 创建 MediaPlayer 接口的适配器类。
public class MediaAdapter extends AdvancedPlayer implements MediaPlayer {@Overridepublic void play(String type, String name) {if ("mp3".equals(type)){System.out.println("play mp3 " + name);}else if ("mp4".equals(type)){super.playMp4(name);}else if ("vlc".equals(type)){super.playVlc(name);}else {System.out.println("not supported");}}
}
  1. 使用 MediaAdapter 来播放不同类型的音频格式。
public class AdapterPatternDemo {public static void main(String[] args) {AudioPlayer audioPlayer = new AudioPlayer();audioPlayer.play("mp3", "beyond the horizon.mp3");audioPlayer.play("mp4", "alone.mp4");audioPlayer.play("vlc", "far far away.vlc");audioPlayer.play("avi", "mind me.avi");}
}
  1. 执行程序,输出结果
    在这里插入图片描述

对象适配器:基于组合

  1. 为普通音频播放器和更高级的音频播放器创建接口。
public interface MediaPlayer {void play(String type, String name);
}
public interface AdvancedMediaPlayer {void playMp4(String name);void playVlc(String name);
}
  1. 创建 AdvancedMediaPlayer 接口的实现类。
public class Mp4Player implements AdvancedMediaPlayer{@Overridepublic void playMp4(String name) {System.out.println("play mp4 " + name);}@Overridepublic void playVlc(String name) {}
}
public class VlcPlayer implements AdvancedMediaPlayer{@Overridepublic void playMp4(String name) {}@Overridepublic void playVlc(String name) {System.out.println("play vlc " + name);}
}
  1. 创建 MediaPlayer 接口的适配器类。
public class MediaAdapter implements MediaPlayer{private AdvancedMediaPlayer advancedMediaPlayer;public MediaAdapter(String type){if ("mp4".equals(type)){advancedMediaPlayer = new Mp4Player();}else if ("vlc".equals(type)){advancedMediaPlayer = new VlcPlayer();}}@Overridepublic void play(String type, String name) {if ("mp4".equals(type)){advancedMediaPlayer.playMp4(name);}else if ("vlc".equals(type)){advancedMediaPlayer.playVlc(name);}}
}
  1. 创建 MediaPlayer 接口的实现类。
public class AudioPlayer implements MediaPlayer{// 创建适配器private MediaAdapter mediaAdapter;@Overridepublic void play(String type, String name) {if ("mp3".equals(type)){System.out.println("play mp3 " + name);}else if ("mp4".equals(type) || "vlc".equals(type)){mediaAdapter = new MediaAdapter(type);mediaAdapter.play(type,name);}else {System.out.println("not supported");}}
}
  1. 使用 AudioPlayer 来播放不同类型的音频格式。
public class AdapterPatternDemo {public static void main(String[] args) {AudioPlayer audioPlayer = new AudioPlayer();audioPlayer.play("mp3", "beyond the horizon.mp3");audioPlayer.play("mp4", "alone.mp4");audioPlayer.play("vlc", "far far away.vlc");audioPlayer.play("avi", "mind me.avi");}
}
  1. 执行程序,输出结果
    在这里插入图片描述
http://www.yayakq.cn/news/270288/

相关文章:

  • 网站反连接wordpress国内外贸主题
  • 北京房产网二手房出售西安网站建设seo优化
  • 教育网站设计欣赏qq群文件wordpress
  • 学敏网站建设备案网址
  • 网站建设与维护书门户网站免费建设
  • 网站本科青岛seo排名收费
  • 网站 seo 如何使用 网站建设公司 保证完成
  • 二手旧书网站开发设计报告抖音代运营服务方案
  • 什么网站可以做任务领赏金php空间租用
  • 怎样在网站上做链接网络规划设计师教程第二版电子版
  • 代理网站是什么自己做服务器的网站
  • 国外品牌网站域名注册好了
  • 对网站外部的搜索引擎优化网站建设管理
  • 优秀网站建设空间字体设计logo
  • 网站注册域名多少钱单招网站开发基础知识
  • 可以做直播的游戏视频网站河南企业网站营销设计
  • 洛阳市建设规划局网站新手有关网站建设需要看哪些书
  • 做视频网站要多大的服务器wordpress主题 mohtml
  • 链接提交百度站长平台莘县网站建设公司
  • 网站设计素材网站大全常州网站开发培训价格
  • 企业 做网站wordpress来源
  • 上海建站提供商可以做淘宝推广的网站
  • 上海莱布拉网站建设帝国cms影视网站模板
  • 手机网站开源系统喜茶vi设计案例分析ppt
  • 智联招聘网站怎么做两份简历模板ico wordpress
  • 如何创建一个新网站平台设计实景图
  • 莆田网站建站建设装修公司加盟合作模式
  • 中山精品网站建设方案什么网站做任务
  • 柳市那些做网站的公司开源网站下载
  • 开发区网站建设的目的网站页脚导航