Loading...

初识设计模式之适配器模式

一、为何要用适配器模式

经过适配器模式设计后,可以使原本接口不匹配而无法一起工作的两个类能够在一起工作。就像我们平时充电时:假设当前我们手头只有Type-C,而我们要充电的设备充电端口是Micro-USB,此时我们就需要一个转接头,这个转接头就是本文描述的适配器。

二、如何用适配器模式

假设你刚买了一台设备,但是用的是Micro-USB的接口,然而你目前只有Type-C的数据线。在你万般无奈的时候,你突然想起家里有一个Type-C转Micro-USB的转接头……

  • 类适配器

    • TypeC类:即Type-C数据线

    • MicroUSB接口:即Micro-USB数据线

    • Adapter类:即转接头

    • Test类:测试转接头是否能用

      //Type-C数据线
      class TypeC{
      	
      	String desc = "Now we can charge with Type-C";
      	
      	public void chargeByTypeC() {
      		System.out.println(desc);
      	}
      	
      }
      
      //Micro-USB数据线
      interface MicroUSB{
      	
      	public void chargeByMicroUSB();
      	
      }
      
      //数据线转接头
      class Adapter extends TypeC implements MicroUSB{
      	
      	public void chargeByMicroUSB() {
      		super.chargeByTypeC();
      	}
      	
      }
      
      //测试
      public class Test {
      
      	public static void main(String[] args) {
      		//拿到一个数据线转接头
      		Adapter adapter = new Adapter();
      		//用这个转接头去把Type-C适配成Mirco-USB接口,如此这般我们的设备就可以充电了
      		adapter.chargeByMicroUSB();
      	}
      
      }
      
  • 对象适配器

    //Type-C数据线
    class TypeC{
    	
    	String desc = "Now we can charge with Type-C";
    	
    	public void chargeByTypeC() {
    		System.out.println(desc);
    	}
    	
    }
    
    //Micro-USB数据线
    interface MicroUSB{
    	
    	public void chargeByMicroUSB();
    	
    }
    
    //数据线转接头
    class Adapter implements MicroUSB{
    	
    	private TypeC typec;
    	
    	public Adapter(TypeC typec) {
    		this.typec = typec;
    	}
    	
    	public void chargeByMicroUSB() {
    		this.typec.chargeByTypeC();
    	}
    	
    }
    
    //测试
    public class Test {
    
    	public static void main(String[] args) {
    		//现在有一根Type-C数据线
    		TypeC typec = new TypeC();
    		//拿到一个数据线转接头
    		Adapter adapter = new Adapter(typec);
    		//用这个转接头去把Type-C适配成Mirco-USB接口,如此这般我们的设备就可以用Mirco-USB充电了
    		adapter.chargeByMicroUSB();
    	}
    
    }
    

    与类适配器所不同的时,这个的适配器类只需要实现Type-C接口,还在适配器的实现中做了些许改变。

posted @ 2020-09-05 19:58  _轻舟  阅读(182)  评论(0编辑  收藏  举报