zoukankan      html  css  js  c++  java
  • 适配器模式

    适配器主要功能就是一个小范围的转换工作,比如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);
    	}
    

      

  • 相关阅读:
    跨数据库操作
    Windows 服务
    Linq To DataTable
    嵌入式软件应用程序开发框架浅见
    31.获取当前系统时间
    30 System类
    29. StringBuilder
    28. string类中方法练习
    27 string类中常用的方法列表
    26.String类(1)
  • 原文地址:https://www.cnblogs.com/javabg/p/7620037.html
Copyright © 2011-2022 走看看