Java设计模式之适配器模式

  • 适配器模式

    将一个类的接口转换成业务需求的另一个接口,适配器模式使原本两个或多个不兼容的接口可以兼容一起工作。

  • 适用性

    1)想使用已经存在的接口,而不符合现在的需求。
    2)想创建一个可以服用的类,该类可以与不相关类的或不可预知的类协同工作。
    3)想使用一些已经存在的子类,而又不想为每个子类新增转换接口,而适配器对象可以适配其父类接口。

  • 举例

    例如电脑都有一个适配电源,可以接入100-240付的交流电,最终输出到电脑的都是20付的直流电。

  • UML类图
    适配器模式(Adapter)

  • 代码示例

    • 定义一个电源接口,接口的实现电流在100-240付之间。
      package com.jin.demo.DesignPatterns.Adapter;
      
      /**
       * 电源接口
       * @auther jinsx
       * @date 2019/6/18 14:03
       */
      public interface Power {
      	void isPower();
      }
      
    • 定义电源接口实现类
      package com.jin.demo.DesignPatterns.Adapter;
      
      /**
       * 电源接口实现类
       * @auther jinsx
       * @date 2019/6/18 14:03
       */
      public class PowerImpl implements Power{
      	@Override
      	public void isPower(){
      		System.out.println("调用220付的交流电源");
      	}
      }
      
    • 定义一个笔记本接口
      package com.jin.demo.DesignPatterns.Adapter;
      
      /**
       * 笔记本接口
       * @auther jinsx
       * @date 2019/6/18 14:07
       */
      public interface NoteBook {
      	void isNoteBook();
      }
      
    • 创建一个适配器,实现了电脑接口,可以转换100-240付交流电为20付直流电。
      package com.jin.demo.DesignPatterns.Adapter;
      
      /**
       * 适配器
       * @auther jinsx
       * @date 2019/6/18 14:09
       */
      public class NoteBookAdapter implements NoteBook {
      	private Power power;
      	public NoteBookAdapter(Power power){
      		this.power = power;
      	}
      	@Override
      	public void isNoteBook(){
      		System.out.println("笔记本需要20付直流电源");
      		power.isPower();
      		System.out.println("经过处理转成20付直流电源");
      	}
      }
      
    • 创建一个测试类
      package com.jin.demo.DesignPatterns.Adapter;
      
      /**
       * 测试类
       * @auther jinsx
       * @date 2019/6/18 14:20
       */
      public class TestNoteBook {
      	public static void main(String[] args){
      		NoteBook nb = new NoteBookAdapter(new PowerImpl());
      		nb.isNoteBook();
      	}
      }
      
    • 执行测试结果
      笔记本需要20付直流电源
      调用220付的交流电源
      经过处理转成20付直流电源
      
  • 点击Java之23种设计模式查看更多的设计模式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值