适配器模式

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


    }

}
原文地址:https://www.cnblogs.com/yangxiaohui227/p/10911748.html