侧边栏壁纸
博主头像
Monkey部落博主等级

Monkey部落,分享技术、经验、遇到的问题及解决方法,欢迎大家互相讨论分享。

  • 累计撰写 59 篇文章
  • 累计创建 36 个标签
  • 累计收到 2 条评论

目 录CONTENT

文章目录

JAVA设计模式-适配器模式

Monkey部落
2022-10-04 / 0 评论 / 0 点赞 / 185 阅读 / 716 字

JAVA设计模式-适配器模式

介绍

适配器模式是一种结构型模式,它主要解决接口之间的兼容问题。当我们需要使用某个类的接口时,但是这个类的接口目前并不符合我们使用需求,不能直接使用,那我们可以采取调整类和接口的方式,但是如果这个接口是第三方提供的,修改不了或者类和接口目前大量使用,并且使用稳定,不能轻易改动时,我们可以使用适配器模式,在不改动这个类的前提下来满足目前系统的需求。生活中也有例子,例如:生活中m2硬盘转SATA接口的转换卡、美版、港版与国行的电源适配器。

图例

image-20221004190337342

角色

  1. 目标接口(Target):定义满足目前系统需求的接口,可以是抽象类或者接口。
  2. 适配者类(Adapter):与目前系统需求不兼容的类,需要被适配的类。
  3. 适配器类(Adapter):实现目标抽象类或者接口和适配者类之间的转换。
  4. 客户类(Client):调用目标接口。

优点

  1. 将目标类和适配者类解耦,不需要改变原有代码即可满足目前需求。
  2. 具有较高的灵活性和可扩展性。

代码示例-以m2硬盘转SATA接口为例

InterfaceSata(Target)

/**
 * All rights Reserved, Designed By monkey.blog.xpyvip.top
 *
 * @version V1.0
 * @Package com.xpyvip.designpattern.adapter
 * @Description: SATA接口
 * @Author: xpy
 * @Date: Created in 2022年10月04日 7:52 下午
 */
public interface InterfaceSata {

    String installInterfaceSata();
}

HardDiskM2(Adapter)

/**
 * All rights Reserved, Designed By monkey.blog.xpyvip.top
 *
 * @version V1.0
 * @Package com.xpyvip.designpattern.adapter
 * @Description: m2硬盘
 * @Author: xpy
 * @Date: Created in 2022年10月04日 7:50 下午
 */
public class HardDiskM2 {

    public String installInterfaceM2(){
        System.out.println("m2硬盘安装接口是m2");
        return "m2";
    }
}

InterfaceAdapter(Adapter)

/**
 * All rights Reserved, Designed By monkey.blog.xpyvip.top
 *
 * @version V1.0
 * @Package com.xpyvip.designpattern.adapter
 * @Description: 适配器
 * @Author: xpy
 * @Date: Created in 2022年10月04日 7:53 下午
 */
public class InterfaceAdapter implements InterfaceSata {

    private HardDiskM2 hardDiskM2;

    public InterfaceAdapter(HardDiskM2 hardDiskM2) {
        this.hardDiskM2 = hardDiskM2;
    }

    public String installInterfaceSata() {
        String m2 = hardDiskM2.installInterfaceM2();
        // 进行m2接口转换sata接口逻辑
        // ......
        return "sata";
    }
}

Client

/**
 * All rights Reserved, Designed By monkey.blog.xpyvip.top
 *
 * @version V1.0
 * @Package com.xpyvip.designpattern.adapter
 * @Description: 客户类
 * @Author: xpy
 * @Date: Created in 2022年10月04日 8:28 下午
 */
public class Client {
    public static void main(String[] args) {
        InterfaceSata interfaceSata = new InterfaceAdapter(new HardDiskM2());
        interfaceSata.installInterfaceSata();
    }
}

关注微信公众号「平哥技术站」, 每日更新,在手机上阅读所有教程,随时随地都能学习。

觉得写的还不错的小伙伴,请作者喝杯咖啡☕ ,支持一下。😊

如有侵权请立即与我们联系,我们将及时处理,联系邮箱:865934097@qq.com。

0

评论区