目录
1:什么是适配器模式
2:怎么使用适配器模式
1:什么是适配器模式
将一个类的接口转换为另外一个类的接口,比如在springMVC中,我们的前端请到DispatcherServlet,但是后端是不同的controller。DispatcherServlet怎么把不同的请求转发到controller,这时候我们就需要适配器模式。增加一个Adapter,让Adapter接口来找到不同的controller。前端的请求接口DispatcherServlet不需要修改。
2:怎么使用适配器模式
不同的逻辑处理方法:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31//相当于spring的controllers public interface AdvancedMediaPlayer { void playMp3(String fileName);//音乐 void playMp4(String fileName);//视频 } //逻辑1 public class Mp3Player implements AdvancedMediaPlayer { public void playMp3(String fileName) { System.out.println("播放map3:"+fileName); } public void playMp4(String fileName) { } } //逻辑2 public class Mp4Player implements AdvancedMediaPlayer { public void playMp3(String fileName) { System.out.println("MP3什么也不做"); } public void playMp4(String fileName) { System.out.println("播放map4:"+fileName); } }
适配器代码这里核心
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31public class MediaAdapter implements Player { //此处使用spring 容器加载 创建出来Map的所有AdvancedMediaPlayer AdvancedMediaPlayer advancedMediaPlayer; //spring 容器创建所有的controller对象和注解的路径可以用 Map<key="路径",value="controller对象"> //根据路径获取指定的controller,去map中获取 //请求路径的 HandlerAdatper 根据路径规则执行不同的Handler。 //构造函数 创建不同的 public MediaAdapter(String type) { if (type.equalsIgnoreCase("mp3")){ advancedMediaPlayer=new Mp3Player(); }else if(type.equalsIgnoreCase("mp4")){ advancedMediaPlayer=new Mp4Player(); } } public void play(String audioType, String fileName) { if(audioType.equalsIgnoreCase("mp3")){ advancedMediaPlayer.playMp3(fileName); }else if(audioType.equalsIgnoreCase("mp4")){ advancedMediaPlayer.playMp4(fileName); } } }
我们请求的DispatcherServlet
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16public class DispatcherServlet implements Player { private MediaAdapter mediaAdapter; //根据不同的路径 在适配器中得到执行逻辑 public void play(String audioType, String fileName) { if (audioType.equalsIgnoreCase("mp2")) { System.out.println("播放mp2"); } else if (audioType.equalsIgnoreCase("mp3")||audioType.equalsIgnoreCase("mp4")) { mediaAdapter = new MediaAdapter(audioType); // mediaAdapter.play(audioType, fileName); } } }
测试代码:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14//我们引入适配器 MediaAdapter //在DispatcherServlet中调用适配器 @org.junit.Test public void t3() { //http请求是request 但是到后端是不同的controller DispatcherServlet dispatcherServlet=new DispatcherServlet(); dispatcherServlet.play("mp2", "测试"); dispatcherServlet.play("mp3", "唱歌"); dispatcherServlet.play("mp4", "电影"); }
输出结果:
最后
以上就是老迟到犀牛最近收集整理的关于设计模式——适配器模式1:什么是适配器模式2:怎么使用适配器模式的全部内容,更多相关设计模式——适配器模式1内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复