适配器模式--介绍、应用及代码

目的 
将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口
不兼容而不能一起工作的那些类可以一起工作。

-----  尽量优先使用Object Adapter的模式

意图: 
你想使用一个已经存在的类,而它的接口不符合你的需求。 
你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作。 
(仅适用于对象A d a p t e r )你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口。对象适配器可以适配它的父类接口。 
(目的和意图是不变的,摘自《设计模式迷你手册》电子版)

原理:

保留现有的类所提供的服务,修改其接口,从而达到客户端的期望。

特征:

目标角色、(适配源)源角色、适配器、用户角色

实例:

比如,你买了个二手手机,没有充电求,以前的充电器是110V的,而新买的手机是220V充电的,这时你就可以弄个电源适配器来转换得到220V电源。

目标角色:220V电压;(适配源)源角色:110V电压;适配器:电源适配器;用户角色:你

代码如下:

//源角色(适配源)
public class Adaptee {
	public void getV110(){
		System.out.print(this.getClass().getName()+":");
		System.out.println("我能用110V电压充电");
	}
}
//目标角色
public interface Target {
	public void getV220();
}
//适配器角色
public class Adapter extends Adaptee implements Target{

	@Override
	public void getV220() {
		// TODO Auto-generated method stub
		System.out.print(this.getClass().getName()+":");
		System.out.println("我能用220V电压充电");
	}
	
}

//执行角色
public class Hello {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("没有适配器之前");
		Adaptee adaptee=new Adaptee();
		adaptee.getV110();
		
		System.out.println("用了适配器之后");
		Adapter adapter=new Adapter();
		adapter.getV110();
		adapter.getV220();
	}

}
其实适配器在实际编程中应用非常广泛,有类适配模式和对象适配模式两种,两者还是有点区别的,同志们具体情况具体分析吧。

--类适配器使用继承关系复用适配源(Adaptee),因此目标(Target)不能是类,只是能接口(java单继承)。 

--对象适配器使用委派关系复用适配源(Adaptee),因此目标(Target)可能是类或接口,可以将多个适配源适配到一个目标接口。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值