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);
    	}
    

      

  • 相关阅读:
    IIS中ASP.NET安全配置
    好用的SQLSERVER数据库自动备份工具SQLBackupAndFTP(功能全面)
    js取两位小数点
    json格式的ajax传输交互
    js全选与反选
    formdata,ajax提交数据
    js判断是否微信浏览器、IE浏览器
    js实现列表从下往上循环滚动
    绝对定位始终居中
    存储、字符串截取、两端对齐、样式绑定、微信调拨号功能
  • 原文地址:https://www.cnblogs.com/javabg/p/7620037.html
Copyright © 2011-2022 走看看