/**
* 适配器模式:通过一个类(适配器 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();
}
}