适配器模式(Adapter)

      

本文主要介绍适配器模式:

意图:使用不同接口的类所提供的服务为客户端提供它所期望的接口

种类:类适配器,对象适配器

        以下代码是类适配器的一个简单实现,其中CarInfo是客户端使用的接口,Car是服务提供者目前提供的类,CarAdapter继承了Car类并实现了CarInfo接口以实现CarInfo和Car之间的适配。

interface CarInfo{
	String getCarName();
	String getCarColor();
}

class Car{
	private String name = "Audi";
	private String color = "Black";
	
	public String getName(){
		return name;
	}
	
	public String getColor(){
		return color;
	}
}

class CarAdapter extends Car implements CarInfo{
	@Override
	public String getCarName(){
		return super.getName();
	}
	@Override
	public String getCarColor(){
		return super.getColor();
	}
}

下面代码是对象适配器的一个实例,上述类适配器的使用场景是客户端定义了需要适配的接口CarInfo,当客户端没有定义这样的接口时,则需要使用对象适配器;对于下面这个例子而言,CarAdapter需要继承CarInfo,而Java是单继承语言,所以就不能继承Car类,而只能通过组合在CarAdapter类中新建一个Car类型的域。

class CarInfo {
	public String getCarName(){
		return "Default Car Name is : Benz";
	}
	public String getCarColor(){
		return "Default color is : Red";
	}
}

class Car{
	private String name = "Audi";
	private String color = "Black";
	
	public String getName(){
		return name;
	}
	
	public String getColor(){
		return color;
	}
}

class CarAdapter extends CarInfo{
	Car audi = new Car();
	
	@Override
	public String getCarName(){
		return audi.getName();
	}
	@Override
	public String getCarColor(){
		return audi.getColor();
	}
}

对象适配器和类适配器的比较:

  • 对象适配器适用于需要从多个对象获取服务。
  • 对象适配器比类适配器脆弱,因为它没有像类适配器那样的接口规范,当上述的对象适配器中CarAdapter需要依赖CarInfo中的相关字段时,和可能会因为其他地方修改该字段而导致程序出错,而接口作为一种API声明不会存在这类问题。





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值