适配器模式

适配器模式一般用于接口转换,文中以英式中式插头转换为例创建demo。
适配器模式分以下两种:对象适配器和类适配器
对象适配器:
以聚合方式实现
在这里插入图片描述

package adapter;

public interface EnglishPlug {
	void charge();
}

package adapter;

public class EnglishPlugImpl implements EnglishPlug{

	@Override
	public void charge() {
		System.out.println("使用英式插头充电");
	}

}

package adapter;

public interface Plug {
	void chargeElectricity();
}

package adapter;

public class ObjectAdapter implements Plug{

	private EnglishPlug englishPlug;
	
	public ObjectAdapter(EnglishPlug englishPlug) {
		super();
		this.englishPlug = englishPlug;
	}

	@Override
	public void chargeElectricity() {
		System.out.println("对象适配器转换为中式插头");
		englishPlug.charge();
	}
	
}

package adapter;

public class Client {
	public static void main(String[] args) {
		
		//对象适配器
		EnglishPlug englishPlug=new EnglishPlugImpl();
		Plug objectAdapter=new ObjectAdapter(englishPlug);
		objectAdapter.chargeElectricity();
		
		//类适配器
		Plug clazzAdapter=new ClazzAdapter();
		clazzAdapter.chargeElectricity();
	}
}

类适配器:
以继承方式实现
在这里插入图片描述

package adapter;

public class ClazzAdapter extends EnglishPlugImpl implements Plug{

	@Override
	public void chargeElectricity() {
		System.out.println("类适配器转换为中式插头");
		super.charge();
	}

}

打印结果:
对象适配器转换为中式插头
使用英式插头充电
类适配器转换为中式插头
使用英式插头充电

小结:
1.对象适配器比类适配器好,因为更灵活。一般多用聚合,少用继承;
2.对象适配器和代理模式的uml图很像但是有一点区别。适配器模式的Adapter是有一个上层接口的,而代理模式的Proxy则没有。代理模式
3.在工作中,A系统通过X接口与B系统对接,由于B系统改造,B系统重新开发了一套接口与A系统对接,但同时又保持原有逻辑不变,此时,A系统可以开发一个适配器Y将B系统的新接口对接到A的原有接口X。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值