设计模式之适配器模式

适配器模式

定义

将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原
本由于接口不兼容而不能一起工作的那些类可以在一起工作。

和生活场景中的插头转接器有点像

模式中的角色

目标接口(Target) :客户所期待的接口,目标可以是具体的或者抽象的类,也可以是接口

需要的适配类(Adaptee):需要适配的类或者适配者类

适配器(Adapter):通过包装一个需要适配的对象,把原接口转变成目标接口

 

package com.xiaoqiang.gof23.structureModel.adapter;

/**
 * @author xiaoqiang
目标接口 两个的插座
 */
public interface Target {
    void handleReq();
}


package com.xiaoqiang.gof23.structureModel.adapter;

/**
 * @author xiaoqiang
 * 
 * 被适配的类   相当于 三个的插座
 */
public class Adaptee {
    public void request() {
        System.out.println("可以完成客户需要的功能!");
    }
}

package com.xiaoqiang.gof23.structureModel.adapter;

/**
 * @author xiaoqiang

 * 
 * 适配器本身
 * 
 * 相当于转接口
 *先实现目标的接口(两个的插座)
 * 两种方式
 *  1:继承被适配类(三个的插座) 然后通过         super.request();  实现其(三个插座)的功能
 *          不过灵活,只能单继承,实现一种
 *  2:组合被适配的类
 *      需要自己提供 Adaptee
 */
public class Adapter   implements Target {

    private Adaptee adaptee;

    @Override
    public void handleReq() {
        adaptee.request();
    }

    public Adapter(Adaptee adaptee) {
        this.adaptee = adaptee;
    }
}


package com.xiaoqiang.gof23.structureModel.adapter;

/**
 * @author xiaoqiang
 * @date $(DATE)-$(TIME)
 * 客户类
 *
 * 相当于笔记本
 */
public class Client {

    public static void main(String[] args) {

//        调用方法
        Adaptee adaptee = new Adaptee();

//        用适配器将  Adaptee 变成了目标需要的  Target
        Target target = new Adapter(adaptee);
//      调用目标需要的方法
        target.handleReq();
//        或者这样
        new Adapter(new Adaptee()).handleReq();
    }
}


 

场景:经常用来做旧系统改造和升级
– 如果我们的系统开发之后再也不需要维护,那么很多模式都是没必要
的,但是不幸的是,事实却是维护一个系统的代价往往是开发一个系
统的数倍。

输入输出流就是标准的适配器模式

 java.io.InputStreamReader(InputStream)
java.io.OutputStreamWriter(OutputStream)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值