设计模式GOF23——适配器模式

适配器模式(adapter)是结构性模式的一种。结构型模式的核心作用是从程序的结构上实现低耦合,从而可以扩大整体的类结构,用来解决更大的问题。

模式的使用场景

将一个类的接口换成客户需要的另外一个接口,Adapter模式使得原本不兼容不能在一起工作的那些类可以在一起工作。
经常用于旧系统的改造升级。
在java.io.InputStreamReader(InputStream)和java.io.OutputStreamWriter(OutputStream)用到

模式中的角色

目标接口(Target):客户期待的接口。目标可以是具体的也可以是抽象的类,也可以是接口。
需要适配的类(adaptee):需要适配的类,或者配置类。
适配器(adapter):通过包装一个合适的对象,把原接口转换成目标接口。

模式的实现

//被适配的类
public class Adaptee {
    //被适配的方法
    public void request(){
        //被适配的类的操作
    }
}
//修改后的接口
public interface Target {
    //修改后接口的方法
    void handleReq();
}
//适配器类
public class Adapter extends Adaptee implements Target{
    //适配器的适配方法,这里是用继承的方式实现的
    public void handleReq() {
        super.request();

    }
}
//使用类
public class Client {
    //使用类调用适配器的方法
    public void test1(Target t){
        t.handleReq();
    }
    //具体使用(继承方式的使用)
    public static void main(String[] args) {
        Client c = new Client();
        Target t = new Adapter();
        c.test1(t);
    }
}

其实适配器不止可以用上述的继承方式,也可以用下面的组合的方式

//适配器类
public class Adapter implements Target{
    private Adaptee adaptee;
    //适配器的适配方法,这里是用组合的方式实现的
    public void handleReq() {
        adaptee.request();
    }
    public Adapter(Adaptee a){
        super();
        this.adaptee = a;
    }
}
//使用类
public class Client {
    //使用类调用适配器的方法
    public void test1(Target t){
        t.handleReq();
    }
    //具体使用(组合方式的使用)
    public static void main(String[] args) {
        Client c = new Client();
        Adaptee a = new Adaptee();
        Target t = new Adapter(a);
        c.test1(t);
    }
}

继承的方式使用时代码少一点,但是Java只能但继承,组合的方式虽然对了一个对象的创建,但是让程序的扩展性会变得更好了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值