/** * 适配器模式:通过一个类(适配器 adapter)来把2个不同的类或者接口的功能组装在一起; * 模式例子:有个Mp4类,里面有个听音乐的方法,还有一个TV类,里面有个看电视的方法,那么如果让MP4类继承TV类是可以实现相应的效果(或者使用组合模式,TV作为MP4的属性),但他们没有业务上的父子关系或者 * 这2个类是别人写的,你没法改动别人的代码,那么现在想要同时具有2个类的功能,只能用适配器模式了.本质是继承+组合方式 * * */ public class Mp4 { public void listenMusic(){ System.out.println("听音乐"); } } public class TV { public void watchTv(){ System.out.println("看电视"); } } //创建一个电脑类,让其同时具有听音乐和看电影的功能,那么就可以继承其中一个类,另一个类作为属性,使用组合的方式引入.这里TV是源(source),mp4是目标(被适配者),ComputerAdapter是适配器 public class ComputerAdapter extends TV { private Mp4 mp4; public ComputerAdapter(Mp4 mp4) { this.mp4 = mp4; } public void listenMusiAndWatchTv(){ this.watchTv();//看视频 mp4.listenMusic();//听音乐 } } public class Test { public static void main(String[] args) { ComputerAdapter computerAdapter = new ComputerAdapter(new Mp4()); computerAdapter.listenMusiAndWatchTv(); } }