码迷,mamicode.com
首页 > 其他好文 > 详细

适配器模式

时间:2017-10-02 14:29:27      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:不能   http   end   override   扩展   test   函数   对象   interface   

适配器主要功能就是一个小范围的转换工作,比如usb接口的笔记本需要连接针孔的键盘,那么就需要一个中间的转换器,把usb和针孔对接起来,中间这个对接的小部件就是适配器

技术分享

技术分享

适配器模式有两种实现方式:

1、直接转换类继承目标类,这种方式有类继承唯一限制的局限性,不利于扩展

/**
 *目标连接对象,针孔键盘
 */
public class KeyBoard {
	public void ZhenKong() {
		System.out.println("键盘针孔");		
	}
}

// ==========================================

/**
 * 适配器接口:usb连键盘上的针孔
 */
public interface Target {
	//目标作用就是转换Usb成针孔连接
	public void tranferUsbToZhenKong();
}

//==============================================
/**
 * 适配器实现类:具体实现了Usb到针孔转换,与目标对象针孔键盘关联起来了,可以通过继承的方式关联,也可以通过注入的方式关联
 * 本例采用继承方式
 */
public class Adapter extends KeyBoard implements Target {
	@Override
	public void tranferUsbToZhenKong() {
		ZhenKong(); //当直接继承目标对象后,就具有了目标对象的方法,可以直接调用
	}
}

//==============================================
	/**
	 * 笔记本不能直接连针孔键盘,得通过中间转换器连接,模拟实际开发中第三方接口的限制,无法直接调用只能先转换再调用
	 */
	public void Usb(Target target)
	{
		target.tranferUsbToZhenKong();
		System.out.println("笔记本Usb端口连适配器转换口");
	}
// ================================
// 测试
	@Test
	public void func()
	{
		Computer computer=new Computer();
		Target target=new Adapter();
		computer.Usb(target);
	}

2、适配器采用注入目标对象的方式  

/**
 *目标连接对象,针孔键盘
 */
public class KeyBoard {
	public void ZhenKong() {
		System.out.println("键盘针孔");		
	}
}
//=====================================

/**
 * 适配器接口:usb连键盘上的针孔
 */
public interface Target {
	//目标作用就是转换Usb成针孔连接
	public void tranferUsbToZhenKong();
}

/**
 * 适配器实现类:具体实现了Usb到针孔转换,与目标对象针孔键盘关联起来了,可以通过继承的方式关联,也可以通过注入的方式关联
 * 本例采用注入目标对象方式
 */
public class Adapter  implements Target {
	
	private KeyBoard keyBoard;
	
	public Adapter(KeyBoard keyBoard)
	{
		this.keyBoard=keyBoard; //通过构造函数注入
	}
	
	@Override
	public void tranferUsbToZhenKong() {
		keyBoard.ZhenKong(); //通过适配器来调用目标对象的方法
	}
}
//==================================
	/**
	 * 笔记本不能直接连针孔键盘,得通过中间转换器连接,模拟实际开发中第三方接口的限制,无法直接调用只能先转换再调用
	 */
	public void Usb(Target target)
	{
		target.tranferUsbToZhenKong();
		System.out.println("笔记本Usb端口连适配器转换口");
	}
//=====================================
	@Test
	public void func()
	{
		Computer computer=new Computer();
		KeyBoard keyBoard=new KeyBoard();
		Target target=new Adapter(keyBoard);
		computer.Usb(target);
	}

技术分享

 

  

 

适配器模式

标签:不能   http   end   override   扩展   test   函数   对象   interface   

原文地址:http://www.cnblogs.com/javabg/p/7620037.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!