第三部分-设计模式-005适配器模式

适配器模式是一种设计模式,用于在不修改原有类的基础上,使得不同接口或类能够协同工作。文章通过类适配器和对象适配器两个例子详细解释了如何实现220V交流电到5V直流电的转换,以手机充电为例,展示了适配器如何在Java中将Voltage220V类转换为IVoltage5V接口。此外,还提到了接口适配器模式,适用于只需实现接口部分方法的情况。
摘要由CSDN通过智能技术生成

适配的是类和接口中对应的一个方法(功能相同的方法)
1、类适配器
Adapter类,通过继承src类、实现dst接口,完成src->dst的适配

例如:充电器(Adapter)、220V交流电(src类)、5V直流电(dst)
在这里插入图片描述

public class Voltage220V {
	public int output220V() {
		return 220;
	}
}
public interface IVoltage5V {
	public int output5V();
}
public class VoltageAdapter extends Voltage220V implements IVoltage5V {
	@Override
	public int output5V() {
		int srcV = output220V();//适配器要用到220V的方法====》充电器要接触到220V
		int dstV = srcV / 44 ;
		return dstV;
	}
}
public class Phone {
	public void charging(IVoltage5V iVoltage5V) {
		if(iVoltage5V.output5V() == 5) {
			System.out.println("可以充电。。。");
		} else if (iVoltage5V.output5V() > 5) {
			System.out.println("不可以充电。。。");
		}
	}
}
public class Client {
	public static void main(String[] args) {
		Phone phone = new Phone();
		phone.charging(new VoltageAdapter());	//输出结果:可以充电。。。
	}
}

2、对象适配器
与类适配器相同,不同的一点是不是继承220V,而是组合了220V

在这里插入图片描述

public class Voltage220V {
	public int output220V() {
		return 220;
	}
}
public interface IVoltage5V {
	public int output5V();
}

public class VoltageAdapter implements IVoltage5V {
	private Voltage220V voltage220V;
	public VoltageAdapter(Voltage220V voltage220v) {
		this.voltage220V = voltage220v;
	}
	@Override
	public int output5V() {
		int dst = 0;
		if(null != voltage220V) {
			int src = voltage220V.output220V();
			dst = src / 44;
		}
		return dst;
	}
}
public class Phone {
	public void charging(IVoltage5V iVoltage5V) {
		if(iVoltage5V.output5V() == 5) {
			System.out.println("可以充电。。。");
		} else if (iVoltage5V.output5V() > 5) {
			System.out.println("不可以充电。。。");
		}
	}
}
public class Client {
	public static void main(String[] args) {
		Phone phone = new Phone();
		phone.charging(new VoltageAdapter(new Voltage220V()));	//可以充电。。。
	}
}

3、接口适配器模式
适用于不需要实现接口的所有方法时

当不需要实现接口的全部方法时,我们可以设计一个实现该接口的抽象类,并且重写接口中的所有方法(重写后的方法体为空),这样该抽象类的子类可以选择性实现方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值