从零双排学java之适配器设计模式

                            适配器设计模式


适配器模式分三种:

1.类适配器      2.对象适配器    3.缺省适配器



类适配器   让没有关系的类和接口产生联系   可以扩展功能   增加已有代码的复用性

使用一个适配器类同时继承类  和实现接口的方法  在这个类中调用他们的方法,让两者这件建立联系

public static void main(String[] args) {
		Target iphone6 = new Iphone6();
		iphone6.connection();
		// 使用适配器的类 需要使用接口的类型来创建一个 同时拥有类和接口方法的适配类
		Target iphone7 = new Adapter();
		iphone7.connection();

	}
}

class Iphone7 {
	// 听音乐方法
	public void listenMusic() {
		System.out.println("直接使用充电口听");
	}
}

// 目标接口
// 当前接口没有对iphone7 进行兼容
interface Target {
	// 耳机连接抽象方法
	public abstract void connection();
}

class Iphone6 implements Target {
	@Override
	public void connection() {
		System.out.println("使用3.5mm听");
	}

}

// 使用继承来实现 让类和接口产生联系
// 使用一个适配器类(相当于第三方类,通过这个类让类和接口 产生联系 提高接口的兼容性)
class Adapter extends Iphone7 implements Target {
	// 实现抽象方法
	@Override
	public void connection() {
		// TODO Auto-generated method stub
		System.out.println("使用转接头");
		super.listenMusic();

	}


缺省适配器

一个接口中通常有很多的方法,实现这个接口的时候就需要实现接口中的所有方法.

但有的时候只需要其中的一两个方法,这个时候就可以用缺省适配器

例子:现在有健身房这样一个接口  大部分初学者都是没法同时完成这么多的任务,这时候就可以用缺省了

//健身房接口
interface JSF{
	//跑步机
	public abstract void PaoBuJi();
	//卧推
	public abstract void WoTui();
	//哑铃
	public abstract void YaLing();
}

先创建一个适配器来空实现接口中的方法

abstract class MyAdapter implements JSF{

	@Override
	public void PaoBuJi() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void WoTui() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void YaLing() {
		// TODO Auto-generated method stub
		
	}	
}

这时根据不同的人就用不同的锻炼项目

//这时  就可以直接继承 是适配器类  
class SP extends MyAdapter{
	//重写适配器的方法
	@Override
	public void PaoBuJi() {
		// TODO Auto-generated method stub
		System.out.println("蛇皮跑了半小时.气喘吁吁");
	}
}
class KDL extends MyAdapter{
	@Override
	public void PaoBuJi() {
		System.out.println("KDL 跑步三小时");
	}
	@Override
	public void YaLing() {
		System.out.println("KDL 10公斤 100举");
	}

结果:不同的人实现了不同的锻炼任务



猜你喜欢

转载自blog.csdn.net/jsymax/article/details/80342070