展开
拓展 关闭
订阅号推广码
GitHub
视频
公告栏 关闭

类适配器

  • 简介
Adapter类,通过继承 src类,实现 dst 类接口,完成src->dst的适配
  • 案例分析
充电器本身相当于Adapter,220V交流电相当于src (即被适配者),我们的目dst(即 目标)是5V直流电

  • 代码实现
package com.atguigu.adapter.classadapter;
//被适配的类
public class Voltage220V {
	//输出220V的电压
	public int output220V() {
		int src = 220;
		System.out.println("电压=" + src + "伏");
		return src;
	}
}

package com.atguigu.adapter.classadapter;
//适配接口
public interface IVoltage5V {
	public int output5V();
}

package com.atguigu.adapter.classadapter;
//适配器类
public class VoltageAdapter extends Voltage220V implements IVoltage5V {
	@Override
	public int output5V() {
		// TODO Auto-generated method stub
		//获取到220V电压
		int srcV = output220V();
		int dstV = srcV / 44 ; //转成 5v
		return dstV;
	}
}

package com.atguigu.adapter.classadapter;
public class Phone {
	//充电
	public void charging(IVoltage5V iVoltage5V) {
		if(iVoltage5V.output5V() == 5) {
			System.out.println("电压为5V, 可以充电~~");
		} else if (iVoltage5V.output5V() > 5) {
			System.out.println("电压大于5V, 不能充电~~");
		}
	}
}

package com.atguigu.adapter.classadapter;
public class Client {
	public static void main(String[] args) {
		System.out.println(" === 类适配器模式 ====");
		Phone phone = new Phone();
		phone.charging(new VoltageAdapter());
	}
}
  • 注意事项和细节
1) Java是单继承机制,所以类适配器需要继承src类这一点算是一个缺点, 因为这要求dst必须是接口,有一定局限性;
2) src类的方法在Adapter中都会暴露出来,也增加了使用的成本。
3) 由于其继承了src类,所以它可以根据需求重写src类的方法,使得Adapter的灵活性增强了
posted @ 2022-08-31 10:04  DogLeftover  阅读(28)  评论(0编辑  收藏  举报