配适器模式

 二、适配器模式

   举个简单的例子,当我们给手机充电时,由于手机充电口是5V,而插座提供的是220V交流电,因此我们通常需要使用充电器将220V交流电转换成可供手机充电用的5V直流电,这个充电器就是一个适配器。

  同样,在编写JAVA程序时,我们可能会遇到这样一种情况:我们需要一个类A来实现接口B,但是类A并没有实现接口B中的所有方法,而类A是不能被改变的,这时我们可以创建一个类C,它继承类A并实现接口B,这个类C就是一个适配器。适配器中的代码将接受你所拥有的接口,并产生你所需要的接口。适配器模式有两张:类适配器模式和对象适配器模式。下面用两个例子来简单演示一下:

1、类适配器模式:

package com.tongye.adapters;

public interface TargetInterface {
    void method1();
    void method2();
}


/*****************************/
package com.tongye.adapters;

/* 源类,我们需要这个类实现接口  TargetInterface,但这个类不能被改变 
 * 源类与接口之间是没有关系的
 * */
class BeAdapted{
    public void method1(){
        System.out.println("method1");
    }
}

/* 这是适配器,它接受了BeAdapted中已有的接口并产生我们需要的接口
 * method1()方法继承自BeAdapted类(即已有的接口),不用再作声明
 * 这里适配器的作用相当于为源类与接口之间建立了一种关系,类似于 implements
 *  */
class Adapter extends BeAdapted implements TargetInterface{
    public void method2(){                // method2()方法无法通过继承获得,因而需要自己声明,这就是适配器为我们产生的接口
        System.out.println("method2");
    }
}

public class ClassAdapter {
    public static void main(String[] args){
        Adapter adapt = new Adapter();
        adapt.method1();
        adapt.method2();
    }
}

Adapter与BeAdapted是继承关系,即为类适配器模式。

 

2、对象适配器模式:

package com.tongye.adapters;

public interface TargetInterface {
    void method1();
    void method2();
}

/*****************************/
package com.tongye.adapters;

/* 源类,我们需要这个类实现接口  TargetInterface,但这个类不能被改变 
 * 源类与接口之间是没有关系的
 * */
class BeAdapted{
    public void method1(){
        System.out.println("method1");
    }
}

/* 这是适配器,它接受了中已有的接口并产生我们需要的接口  */
class Adapter implements TargetInterface{
    private static BeAdapted adapted;            // 声明一个BeAdapted对象引用
    public Adapter(BeAdapted adapted){        // 构造方法,接收一个BeAdapted引用作为参数
        this.adapted = adapted;
    }
    
    public void method1(){                // method1()在源类BeAdapted中有,这里直接委派
        this.adapted.method1();
    }
    
    public void method2(){                // method2()方法无法通过继承获得,需要自己声明
        System.out.println("method2");
    }
}

Adapter与BeAdapted是委托关系,即为对象适配器模式。

通过使用适配器模式,可以大大提升程序的灵活性以及代码的可重复性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值