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

      

  • 相关阅读:
    双USB墙壁电源插座面板....制作详解-电子产品世界论坛
    公共充电站?不用守着手机充电了 | 爱范儿
    公司简介-远能电气
    连接器|网络滤波连接器|电脑连接器|RJ45变压器-华联威电子有限公司
    自己动手做简单移动电源
    移动电源市场有多乱?
    聚合物电池_百度百科
    电芯:聚合物的一定比18650更好_移动电源_移动电源评测-中关村在线
    图文:充电宝租借自助机现身江城_新浪财经_新浪网
    不按时归还,信用会有“污点”_新浪浙江_新浪网
  • 原文地址:https://www.cnblogs.com/javabg/p/7620037.html
Copyright © 2011-2022 走看看