设计模式五:适配器模式

定义:
将一个类的接口转换成客户希望的另外一个接口。
目标(Target)角色:定义Client使用的接口。
被适配(Adaptee)角色:这个角色有一个已存在并使用了的接口,而这个接口是需要我们适配的。
适配器(Adapter)角色:这个适配器模式的核心。它将被适配角色已有的接口转换为目标角色希望的接


分类:

类适配器模式

适配器角色对于被适配角色的适配是通过继承完成的。由于在java中不支持多重继承,而且继承有破坏封装之嫌,众多的书中(包括《设计模式》)都提倡使用组合来代替继承。

类适配器模式类图



对象适配器模式
适配器角色对于被适配角色的适配是通过组合来完成的。

对象适配器模式类图


举例:

类图



源码

/**
 * 测试类
 */
public class Test {

	public static void main(String[] args) {
		//给HTC手机充电
		Charger htcCharger = new HtcCharger();
		htcCharger.exportPower();
		
		//给N97手机充电
		Charger n97Charger = new N97Charger();
		n97Charger.exportPower();
		
		//给N98手机充电
		Charger n98Charger = new N98Charger();
		n98Charger.exportPower();
	}

}

/**
 * 充电器接口
 */
public interface Charger {

	//输出电流
	public void exportPower();
	
}

/**
 * HTC充电器
 */
public class HtcCharger implements Charger{

	@Override
	public void exportPower() {
		System.out.println("HTC充电器:输出5V电压!");
	}

}

/**
 * N97充电器,类的适配器模式
 */
public class N97Charger extends NokiaCharger implements Charger{

	@Override
	public void exportPower() {
		if(!this.check()){
			this.export();
			System.out.println("N97手机:充电中……");
		}
	}

}

/**
 * N98充电器,对象的适配器模式
 */
public class N98Charger implements Charger{

	private NokiaCharger nokiaCharger = new NokiaCharger();
	
	@Override
	public void exportPower() {
		if(!nokiaCharger.check()){
			nokiaCharger.export();
			System.out.println("N98手机:充电中……");
		}
	}

}

/**
 * 诺基亚充电器
 */
public class NokiaCharger {

	public boolean check(){
		System.out.println("诺基亚充电器:检查电池电量!");
		return false;
	}
	
	public void export(){
		System.out.println("诺基亚充电器:开始充电!");
	}
	
}



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值