一、结构型设计模式
这篇文章我们来讲解下结构型设计模式,结构型设计模式,主要处理类或对象的组合关系,为如何设计类以形成更大的结构提供指南。
结构型设计模式包括:适配器模式(Adapter Pattern)、桥接模式(Bridge Pattern)、组合模式(Composite Pattern)、装饰器模式(Decorator Pattern)、外观模式(Facade Pattern)、享元模式(Flyweight Pattern)、代理模式(Proxy Pattern)
在本文中主要介绍 适配器、桥接、组合、享元四种设计模式,下篇文章为讲解 外观、代理、 装饰器 。
二、适配器模式
适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。它结合了两个独立接口的功能。
优点:
这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子,在视频播放器中,假设视频播放器只能播放MP4格式的视频,那现在又有个VLC格式的视频,就不能播放了,那要如何解决这个问题?如果我们做个转换器,将VLC格式的视频转换为MP4格式的视频不就可以播放了吗,那这个转换器我们就可以采用适配器设计模式来设计。
public interface VideoInterFace {
String getVideoPath();
}
public class Mp4Video implements VideoInterFace {
@Override
public String getVideoPath() {
return "Mp4视频的路径";
}
}
public class VlcVideo implements VideoInterFace{
@Override
public String getVideoPath() {
return "Vlc视频的路径";
}
}
public class Player {
private Mp4Video video;
public Player(Mp4Video video) {
this.video = video;
}
public void play() {
System.out.println(StringFormatter.concat("播放视频视频地址:", video.getVideoPath()).getValue());
}
}
public class Mp4Adapter extends Mp4Video {
private VlcVideo vlcVideo;
public Mp4Adapter(VlcVideo vlcVideo) {
this.vlcVideo = vlcVideo;
}
@Override
public String getVideoPath() {
System.out.println(StringFormatter.concat("开始格式转换,vlc地址:", vlcVideo.getVideoPath()).getValue());
return "转换后的Mp4路径!";
}
}
public class demo {
public static void main(String[] args) {
Player player = new Player(new Mp4Video());
player.play();
VlcVideo vlcVideo = new VlcVideo();
Player player1 = new Player(new Mp4Adapter(vlcVideo));
player1.play();
}
}
从上面的例子可以看出,需要播放VLC格式,就需要写一个目标适配器,这里是Mp4适配器,并继承Mp4,使之有Mp4的特性,并在内部做相应的转换即可,提高了系统的可扩展性。
原文地址:https://blog.csdn.net/weixin_65777087/article/details/134743558
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_42500.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!