适配器模式:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。
通俗的说,将2个毫不相干的类,通过适配器可以调用目标类的方法。
现模拟一个场景,电视机可以看电视,游戏机可以玩游戏,两者并没有直接的关系,需求是想让电视机也能够玩游戏,所有需要构造1个电视机的适配器出来。
代码如下:
//电视机接口
interface TV{
void show();
}
//普通电视机的实现类
class TVClass implements TV{
public void show(){
System.out.println("可以播放电视节目!");
}
}
//游戏机接口
interface Game{
void play();
}
//游戏机的实现类
class GameClass implements Game{
public void play(){
System.out.println("可以玩游戏!");
}
}
//电视机适配器的实现类
class TVAdapter extends GameClass implements TV {
@Override
public void show() {
System.out.println("可以播放电视节目!");
super.play();
}
}
测试代码如下:
public static void main(String[] args) {
TV tv1 = new TVClass();
tv1.show();
System.out.println("========================");
TV tv2 = new TVAdapter();
tv2.show();
}
结果如下:
可以播放电视节目!
========================
可以播放电视节目!
可以玩游戏!
可见电视机的适配器也能够支持玩游戏的功能。