0
点赞
收藏
分享

微信扫一扫

Java设计模式--适配器模式

ZGtheGreat 2022-04-18 阅读 69

适配器模式基本介绍

        基本介绍

                1) 适配器模式(Adapter Pattern) 将某个类的接口转换成客户端期望的另一个接口表

        示,主的目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同

        工作。其别名为包装器(Wrapper)

                2) 适配器模式属于结构型模式

                3) 主要分为三类:类适配器模式、对象适配器模式、接口适配器模式
 

        工作原理

                1) 适配器模式:将一个类的接口转换成另一种接口. 原本接口不兼容的类可以 兼容

                2) 从用户的角度看不到被适配者,是解耦的

                3) 用户调用适配器转化出来的目标接口方法,适配器再调用被适配者的相关接口方法

                4) 用户收到反馈结果,感觉只是和目标接口交互


类适配器模式介绍

        基本介绍:Adapter 类,通过继承 src 类,实现 dst 类接口,完成 src->dst 的适配。

类适配器模式应用实例

        应用实例说明

                以生活中充电器的例子来讲解适配器,充电器本身相当于Adapter, 220V 交流电

        相当于src ( 即被适配者 ) ,我们的目 dst( 即 目标 ) 是5V直流电

 代码:
        被适配类

public class Voltage220V {
	//输出220V电压
	public int output220V() {
		int src = 220;
		System.out.println("电压=" + src + "V");
		return src;
	}
}

       适配接口

public interface IVoltage5V {
	public int output5V();
}

         适配器类

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;
	}

}

        手机

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, 不能充电~~");
		}
	}
}

        客户端

public class Client {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Phone phone = new Phone();
		phone.charging(new VoltageAdapter());
	}

}

类适配器模式注意事项和细节

        1) Java是单继承机制,所以类适配器需要继承 src 类这一点算是一个缺点 , 因为这要

dst 必须是接口,有一定局限性 ;

        2) src类的方法在 Adapter 中都会暴露出来,也增加了使用的成本。

        3) 由于其继承了 src 类,所以它可以根据需求重写 src 类的方法,使得 Adapter 的灵

活性增强了。

举报

相关推荐

0 条评论