设计模式学习:适配器模式

概念

适配器即把原本不兼容的接口连接在一起,使其可以正常使用的工具

适配器模式的作用就是将现有的一种接口,转换成所另一种所需的接口,使得原本由于接口不兼容而不能一起工作的类可以正常工作


例子

现在很多手机为了获得更好的防水性能,都取消了原本的3.5mm的耳机孔,让我们原本的耳机变得没有用武之地。为了弥补这个不便,手机厂商都会附赠一个转接器,让我们的耳机可以通过转接器连接到充电孔,这样就可以正常使用耳机了。

这就是一个典型的适配器模式,我们现有的接口是一个充电接口,所需的接口是耳机接口,两者并不兼容,而转接器就是一个适配器,让耳机能够使用充电接口正常工作。


代码示例

//充电接口是已有的,所以是具体的类
class ChargePlug
{
	public void insertChargePlug(){
		System.out.println("使用了充电接口");
	}
}
//没有耳机接口,创建抽象的接口
interface EarphoneInterface
{
	void insetEarphonePlug();
}
//适配器类,因为是要转化为耳机接口,所以在此实现耳机接口的方法
class Adapter implements EarphoneInterface 
{
	private ChargePlug cp;

	//使用适配器需要传入一个充电接口
	public Adapter(ChargePlug cp){
		this.cp = cp;
	}

	//耳机接口的方法
	@Override
	void insertEarphonePlug(){
		System.out.println("没有耳机接口,使用充电接口");
		//在此转化为使用充电接口的方法
		cp.insertChargePlug();
	}
}
//示例,使用耳机播放音乐
class PlayMusicWithEarphone {

    public static void main(String[] args) {
        //已有充电接口,直接实例化一个充电接口对象
        ChargePlug chargePlug = new ChargePlug();
        //通过适配器转化为耳机接口
        EarphoneInterface ei = new Adapter(chargePlug);

        //使用转化后的耳机接口
        PlayMusicWithEarphone demo = new PlayMusicWithEarphone();
        demo.insert(ei);
        demo.play();
    }

    //插入耳机,需要提供耳机接口
    private void insert(EarphoneInterface ei) {
        ei.insetEarphonePlug();
    }

    private void play() {
        System.out.println("播放音乐");
    }
}

运行结果:

如代码所示,通过适配器,没有耳机插孔,我们也能够使用耳机来听音乐了~

你可能感兴趣的:(Java基础,设计模式,适配器模式)