第五篇:适配器模式

这个模式挺简单的,大家一看就懂。

首先,适配器模式有两个角色,适配器,适配对象; 

我们先说,生活中有哪些与适配器模式类似的地方?

听过最多的例子,电源插座!

你有台电子设备,插头是三孔的,结果电源排插只提供了两孔的;这个时候你怎么办?你得买一个转接插座,这个插座有头是两孔的,它可以连接上原来的插座,而它也提供一个三孔的入口让你可以插入,这个时候就完美解决了你的问题!

然我们来画一个丑陋不堪的图看看样子...这图我都不好意思贴出来...


那...就让我们以这幅图来写代码吧!

/**一个两孔插座接口*/
public interface TwoSocket {
	//插头插入
	void into();
	//插头拔出
	void out();
}

/**格力牌排插!*/
class GreeSocket implements TwoSocket{

	@Override
	public void into() {
		System.out.println("格力插入插头");
	}
	@Override
	public void out() {
		System.out.println("格力拔出插头");
	}
}

/**一个三孔插座接口*/
interface ThreeSocket {
	//插头插入
	void into();
	//插头拔出
	void out();
}


/**创建一个两孔插座适配器,实现我们客户端想要的三孔接口*/
class TwoSocketAdapter implements ThreeSocket{
	//适配对象
	private TwoSocket twoSocket;
	
	public TwoSocketAdapter(TwoSocket twoSocket) {
		this.twoSocket = twoSocket;
	}
	@Override
	public void into() {
		//在实际运用上,没有这么简单,不可能直接去调用适配对象的方法,有可能要做些数据转换
		System.out.println("可能要做的数据转换...");
		twoSocket.into();
	}

	@Override
	public void out() {
		twoSocket.out();
	}
	
}


测试一下:
public class Test {
	public static void main(String[] args) {
		//由于我们的插头是三线的,要使用三孔插座接口
		//但房间里的格力牌插座是两孔的,我们无法当作三孔插座来用
		//ThreeSocket ts = new GreeSocket();类型不匹配,报错!
		
		//我们为格力牌插座创建一个插座转换器(插座适配器),让它看起来像是个三孔插座
		TwoSocket socket = new GreeSocket();
		ThreeSocket ts = new TwoSocketAdapter(socket);
		//调用适配器的方法时,底层还是调用被适配对象的方法
		//只不多在内部可能经过了各种数据转换
		ts.into();
		
	}
}
************************************************************************

可能要做的数据转换...
格力插入插头
************************************************************************

最后,让我们来定义下适配器模式!

适配器模式:将一个类的接口转换成客户所期望和能够使用的另一个接口,让两个原本不兼容的类能够使用起来,在底层,适配器的行为都依赖于适配对象的行为;


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值