设计模式-适配器模式

设计模式——适配器模式


适配器模式:在计算机编程中,适配器模式(有时候也称包装样式或者包装)将一个类的接口适配成用户所期待的。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。


适配器类型:适配器分为两类,第一类是对象适配器模式,第二类是类适配器模式。

对象适配器:在这种适配器模式中,适配器容纳一个它包裹的类的实例。在这种情况下,适配器调用被包裹对象的物理实体。

类适配器:这种适配器模式下,适配器继承自已实现的类(一般多重继承)。


适配器功能:将一个接口转换成另一个接口。


适配器模式实例:例如说我们目前的手机充电器,可能我们目前市面上流行最广的还是我们的安卓手机,当然我们的充电器型号也就是安卓的,如果我们想直接给苹果的手机充电是做不到的,所以我们现在需要一个适配器。


效果图如下图所示
具体代码

IosMobile.java:
/*
	 * @author lin_sir;
	 * 
	 * @crate 2016-1-31;
	 * 
	 * 这是我们的一个ios手机类,我们想做的就是用一个android的充电器+适配器给它充电;
	 * 
	 */

public class IosMobile {

	public void inputPower(IosCharger charger) {

		String provide_Ios_poewr = charger.provide_ios_charger();
		System.out.println("手机(ios):我需要ios接口的充电器,现在是--->" + provide_Ios_poewr);

	}

}

IosCharger.java:
<div>/*
  * @author lin_sir;
  * 
  * @crate 2016-1-31;
  * 
  * 从这里我们可以看得出来,手机需要的是ios的充电接口;
  * 
  */</div><div>
</div><div>public interface IosCharger {</div><div>
</div><div> public String provide_ios_charger();</div><div>
</div><div>}</div>

AndroidCharger.java:
/*
	 * @author lin_sir;
	 * 
	 * @crate 2016-1-31;
	 * 
	 * 我们在这里提供的是一个安卓的充电器;
	 * 
	 */

public class AndroidCharger {

	public String provide_android_power() {

		System.out.println("充电器:我提供的是安卓充电器");

		return "安卓充电器";

	}

}

IosChargerAdapter.java:
/*
	 * @author lin_sir;
	 * 
	 * @crate 2016-1-31;
	 * 
	 * 这是我们的一个适配器;
	 * 
	 */

public class IosChargerAdapter implements IosCharger {

	private AndroidCharger AndroidCharger;

	public IosChargerAdapter(AndroidCharger AndroidCharger) {
		this.AndroidCharger = AndroidCharger;
	}

	@Override
	public String provide_ios_charger() {
		// TODO Auto-generated method stub
		// 在这里我们进行了一些操作
		String prower=AndroidCharger.provide_android_power();
		System.out.println("适配器:已经将android充电器接口,换成ios接口");
		return "iosCharger";
	}

}

Test.java:
/*
	 * @author lin_sir;
	 * 
	 * @crate 2016-1-31;
	 * 
	 * 测试类;
	 * 
	 */

public class Test {

	public static void main(String[] args) {
		
		IosMobile iosMobile=new IosMobile();
		IosCharger iosCharger=new IosChargerAdapter(new AndroidCharger());
		iosMobile.inputPower(iosCharger);
		
		
	}
	
}


输出结果
充电器:我提供的是安卓充电器
适配器:已经将android充电器接口,换成ios接口
手机(ios):我需要ios接口的充电器,现在是--->iosCharger


根据以上代码我们可以得出的结论是,我们已经可以用一个android充电器+适配器给ios手机充电了,这样我们的适配器的目的也就达到了,而且我们的ios手机类,和安卓充电器类完全没有发生改变,只是用一个适配器类就可以了,实现了ios手机和安卓充电器的完全解耦。

最后我想说的就是,我们已经初步掌握了适配器模式,单例模式,在接下来的博客里面我会继续为大家介绍其它的设计模式的。







评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值