package com.eric.结构型模式.适配器模式.引例;
/**
* @author Eric
* @ProjectName my_design_23
* @description 目标角色
* @CreateTime 2020-11-30 12:51:20
*/
public interface Target {
//任务
public void task();
}
package com.eric.结构型模式.适配器模式.引例;
/**
* @author Eric
* @ProjectName my_design_23
* @description 源角色
* @CreateTime 2020-11-30 12:52:09
*/
public class Adaptee {
//原有业务处理
public void SpecificTask(){
System.out.println("原始业务处理中...");
}
}
package com.eric.结构型模式.适配器模式.引例;
/**
* @author Eric
* @ProjectName my_design_23
* @description 适配器角色
* @CreateTime 2020-11-30 12:53:19
*/
public class Adapter extends Adaptee implements Target {
@Override
public void task() {
super.SpecificTask();
}
}
package com.eric.结构型模式.适配器模式.引例;
/**
* @author Eric
* @ProjectName my_design_23
* @description 测试类
* @CreateTime 2020-11-30 12:54:24
*/
public class Client {
public static void main(String[] args) {
//适配器模式应用
Target target = new Adapter();
target.task();
}
}
package com.eric.结构型模式.适配器模式.例1;
/**
* @author Eric
* @ProjectName my_design_23
* @description 馄饨接口
* @CreateTime 2020-11-30 16:17:31
*/
public interface Hundun {
public void makeHundun();
}
package com.eric.结构型模式.适配器模式.例1;
/**
* @author Eric
* @ProjectName my_design_23
* @description 饺子类
* @CreateTime 2020-11-30 16:14:40
*/
public class Dumplings {
public void makeDumplings(){
System.out.println("调制菜馅");
System.out.println("擀面皮");
System.out.println("包饺子");
}
}
package com.eric.结构型模式.适配器模式.例1;
/**
* @author Eric
* @ProjectName my_design_23
* @description 测试类
* @CreateTime 2020-11-30 17:18:28
*/
public class ClientDemo {
public static void main(String[] args) {
Hundun adapter = new FoodAdapter();
adapter.makeHundun();
}
}
package com.eric.结构型模式.适配器模式.例2.video;
/**
* @author Eric
* @ProjectName my_design_23
* @description 牛皮的媒体播放器 播放视频
* @CreateTime 2020-11-30 17:28:19
*/
public interface AdvanceMediaPlayer {
public void playVlc(String fileName);
public void playMp4(String fileName);
}
package com.eric.结构型模式.适配器模式.例2.player;
/**
* @author Eric
* @ProjectName my_design_23
* @description 媒体接口 播放音乐使用
* @CreateTime 2020-11-30 17:27:22
*/
public interface MediaPlayer {
public void play(String audioType,String fileName);
}
package com.eric.结构型模式.适配器模式.例2.video;
/**
* @author Eric
* @ProjectName my_design_23
* @description Mp4的实现类
* @CreateTime 2020-11-30 17:31:21
*/
public class Mp4Player implements AdvanceMediaPlayer {
@Override
public void playVlc(String fileName) {
//没有此业务
}
@Override
public void playMp4(String fileName) {
System.out.println("播放Mp4文件(Name:"+fileName+")中....");
}
}
package com.eric.结构型模式.适配器模式.例2.video;
/**
* @author Eric
* @ProjectName my_design_23
* @description Vlc的实现类
* @CreateTime 2020-11-30 17:29:51
*/
public class VlcPlayer implements AdvanceMediaPlayer {
@Override
public void playVlc(String fileName) {
System.out.println("播放vlc文件(Name:"+fileName+")中....");
}
@Override
public void playMp4(String fileName) {
//没有此业务
}
}
package com.eric.结构型模式.适配器模式.例2.player;
import com.eric.结构型模式.适配器模式.例2.video.AdvanceMediaPlayer;
import com.eric.结构型模式.适配器模式.例2.video.Mp4Player;
import com.eric.结构型模式.适配器模式.例2.video.VlcPlayer;
/**
* @author Eric
* @ProjectName my_design_23
* @description 媒体适配器类
* @CreateTime 2020-11-30 17:33:35
*/
public class MediaAdapter implements MediaPlayer {
private AdvanceMediaPlayer advanceMediaPlayer;
public MediaAdapter(String audioType){
if("vlc".equalsIgnoreCase(audioType)){
advanceMediaPlayer = new VlcPlayer();
}else if("mp4".equalsIgnoreCase(audioType)){
advanceMediaPlayer = new Mp4Player();
}
}
@Override
public void play(String audioType, String fileName) {
if("vlc".equalsIgnoreCase(audioType)){
advanceMediaPlayer.playVlc(fileName);
}else if("mp4".equalsIgnoreCase(audioType)){
advanceMediaPlayer.playMp4(fileName);
}
}
}
package com.eric.结构型模式.适配器模式.例2.player;
/**
* @author Eric
* @ProjectName my_design_23
* @description 实现MediaPlayer接口的实现类
* @CreateTime 2020-11-30 17:39:27
*/
//可以播放不同类型的音频格式
public class AudioPlayer implements MediaPlayer {
private MediaAdapter mediaAdapter;
@Override
public void play(String audioType, String fileName) {
//播放MP3音乐文件的内置支持
if("mp3".equalsIgnoreCase(audioType)){
System.out.println("播放 MP3-file(Name:"+fileName+")中...");
}
//mediaAdapter提供了播放其他文件格式的支持
else if ("vlc".equalsIgnoreCase(audioType)||"mp4".equalsIgnoreCase(audioType)){
mediaAdapter = new MediaAdapter(audioType);
mediaAdapter.play(audioType,fileName);
}else {
System.out.println("目前不支持"+audioType+"类型文件");
}
}
}
package com.eric.结构型模式.适配器模式.例2.test;
import com.eric.结构型模式.适配器模式.例2.player.AudioPlayer;
/**
* @author Eric
* @ProjectName my_design_23
* @description 测试类
* @CreateTime 2020-11-30 17:48:32
*/
public class AdapterPatternDemo {
public static void main(String[] args) {
AudioPlayer audioPlayer = new AudioPlayer();
audioPlayer.play("mp3","你妈炸了.mp3");
audioPlayer.play("mp4","飞翔的鸡儿.mp4");
audioPlayer.play("vlc","进击的小人儿.vlc");
audioPlayer.play("avi","岛国的生活.avi");
}
}
原文:https://www.cnblogs.com/zyl-0110/p/14204674.html