
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