网站备案 四川,咸宁网站seo排名,邯郸做移动网站多少钱,做ppt哪些网站的图片质量高文章目录 介绍开始架构图定义类的功能定义类的实现 测试样例 总结 介绍 将抽象部分与它的实现部分分离#xff0c;使他们都可以独立地发生变化。 Bridge的意思是桥梁。就像在现实世界中#xff0c;桥梁的功能是将河流的两侧连接起来一样, Bridge模式的作用也是将两样东西连接… 文章目录 介绍开始架构图定义类的功能定义类的实现 测试样例 总结 介绍 将抽象部分与它的实现部分分离使他们都可以独立地发生变化。 Bridge的意思是桥梁。就像在现实世界中桥梁的功能是将河流的两侧连接起来一样, Bridge模式的作用也是将两样东西连接起来它们分别是类的功能层次结构和类的实现层次结构。 Bridge模式的作用是在类的功能层次结构 和 类的实现层次结构之间搭建桥梁
开始
架构图 定义类的功能
Slf4j
public abstract class Platform {protected Video video;public Platform(Video video) {this.video video;}public abstract void openVideo(Long videoId);public abstract void downloadVideo(Long videoId);}
Slf4j
public class WindowsPlatform extends Platform {public WindowsPlatform(Video video) {super(video);}Overridepublic void openVideo(Long videoId) {log.info(在windows上开始播放 video);video.show(videoId);}Overridepublic void downloadVideo(Long videoId) {log.info(开始针对视频源将其转化为windows可播放源,进行下载);video.download(videoId);}
}
Slf4j
public class LinuxPlatform extends Platform {public LinuxPlatform(Video display) {super(display);}Overridepublic void openVideo(Long videoId) {log.info(在linux上开始播放 video);video.show(videoId);}Overridepublic void downloadVideo(Long videoId) {log.info(开始针对视频源将其转化为linux可播放源,进行下载);video.download(videoId);}
}定义类的实现
public interface Video {/*** 下载视频*/void download(Long videoId);/*** 查看视频信息*/void show(Long videoId);}
Service(mp4Video)
Slf4j
public class MP4Video implements Video {Overridepublic void download(Long videoId) {log.info(正在查询MP4格式的视频源);log.info(正在查询视频编号{}, videoId);String url /usr/local/video/ UUID.randomUUID();log.info(查询结束下载地址{}, url);}Overridepublic void show(Long videoId) {log.info(正在查询MP4格式的视频源);log.info(正在查询视频编号{}, videoId);String url /usr/local/video/ UUID.randomUUID();log.info(查询结束,立即播放{}, url);}
}Service(movVideo)
Slf4j
public class MOVVideo implements Video {Overridepublic void download(Long videoId) {log.info(正在查询MOV格式的视频源);log.info(正在查询视频编号{}, videoId);String url /usr/local/video/ UUID.randomUUID();log.info(查询结束下载地址{}, url);}Overridepublic void show(Long videoId) {log.info(正在查询MOV格式的视频源);log.info(正在查询视频编号{}, videoId);String url /usr/local/video/ UUID.randomUUID();log.info(查询结束,立即播放{}, url);}
}
测试样例
Slf4j
SpringBootTest(classes BridgeApplication.class)
public class TestBridge {Resourceprivate MapString, Video videoMap;Testpublic void testLinuxPlatform() {Platform linuxPlatform1 new LinuxPlatform(videoMap.get(mp4Video));linuxPlatform1.openVideo(1L);linuxPlatform1.downloadVideo(1L);Platform linuxPlatform2 new LinuxPlatform(videoMap.get(movVideo));linuxPlatform2.openVideo(10L);linuxPlatform2.downloadVideo(10L);}Testpublic void testWindowsPlatform() {Platform windowsPlatform1 new LinuxPlatform(videoMap.get(mp4Video));windowsPlatform1.openVideo(2L);windowsPlatform1.downloadVideo(2L);Platform windowsPlatform2 new LinuxPlatform(videoMap.get(movVideo));windowsPlatform2.openVideo(20L);windowsPlatform2.downloadVideo(20L);}}
总结 Bridge模式的特征是将类的功能层次结构与类的实现层次结构分离开了。将类的这两个层次结构分离开有利于独立地对它们进行扩展。当想要增加功能时只需要在类的功能层次结构一侧增加类即可不必对类的实现层次结构做任何修改。而且增加后的功能可以被所有的实现使用。例如在此样例中我们还可以将类的功能层次结构应用于软件所运行的操作系统上。如果我们将某个程序中依赖于操作系统的部分划分为 Windows版、Macintosh 版、Unix 版那么我们就可以用 Bridge模式中的类的实现层次结构来表现这些依赖于操作系统的部分。