Adapter 适配器模式

一、Adapter 适配器模式
    将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能在一起工作的类可以一起工作。
    适配器在我们生活中随处可见,就拿我们常用的电子设备笔记本电脑来说,笔记本需要使用的是直流电源,而我们生活中的电都是交流电,这个时候就需要使用电源适配器将交流电转换为直流电,这就是适配器模式的使用。
    适配器模式可以分为两种情况:
    1、类适配器模式,使用继承实现的适配器。
    2、对象适配器模式,使用委托实现的适配器。
二、类适配器模式
    
 
    Target 表示客户需要的接口。
    Adaptee 表示目前需要适配的类。
    Adapter 表示将Adaptee适配为Target的适配器。
2.1 Target接口
    
   
   
  1. /**客户期待的接口
  2. * Created by Administrator on 2017/4/26 0026.
  3. */
  4. public interface Target {
  5. void newCharge();
  6. }

2.2 Adaptee类
    
   
   
  1. /**现有类,也即需要适配的类
  2. * Created by Administrator on 2017/4/26 0026.
  3. */
  4. public class Adaptee {
  5. public void charge(){
  6. System.out.println("电器用电中");
  7. }
  8. }
2.3 Adapter适配器
    
   
   
  1. /**适配器
  2. * Created by Administrator on 2017/4/26 0026.
  3. */
  4. public class Adapter extends Adaptee implements Target {
  5. @Override
  6. public void newCharge() {
  7. charge();
  8. }
  9. }
2.4 测试方法
    
    
    
  1. public static void main(String[] args) {
  2. Target target = new Adapter();
  3. target.newCharge();
  4. }
使用类继承的方式是有局限性的,因为java是不支持多继承,如果使用了继承方式,类的扩展性就大大降低,所以建议使用下面对象适配的方式。

三、对象适配器
    
 ModelAdapter 表示对象适配器,其它的均和类适配器相同。
3.1 ModelAdapter
    
      
      
  1. /**
  2. * Created by Administrator on 2017/4/26 0026.
  3. */
  4. public class ModelAdapter implements Target {
  5. private Adaptee adaptee;
  6. public ModelAdapter(Adaptee adaptee) {
  7. this.adaptee = adaptee;
  8. }
  9. @Override
  10. public void newCharge() {
  11. adaptee.charge();
  12. }
  13. }
从上述代码中我们可以看到,适配器中保存了一个被适配的对象,通过被适配的对象的方法来实现我们的目标方法。
四、适配器模式的使用
    通常情况下,被适配的类是以及经过广泛使用的类,如果我们现在需要新的接口,而且用到原来类的方法时,这个时候就可以使用适配器模式。
    当然,有的时候我们可以通过修改现有类的方式来达到我们的目标,但大部分情况下,现有类使用比较广泛,在很多应用中都使用,如果我们修改了现有类,就会造成应用的不兼容,这个时候就要考虑使用适配器模式了。
    




    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值