当前位置: 首页 > news >正文

java25种设计模式之适配器模式

1、定义

适配器模式在java中是一中结构型设计模式。
在实际的java来发中,有时候我们会遇到一些不能直接调用,或者不是客户需要的接口,但是却需要使用时,我们就可以使用适配器设计模式。
适配器设计模式就是将一个原本不兼容的接口通过转换或者适配成我们想要的接口,使原本两个不相关接口可以在一起工作。

2、角色分析

在改设计模式中,总共可以分为三个角色。
需要适配的类(Adaptee):需要适配的类或适配者类。
目标接口:客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。(其实就是我们需要适配的接口)
适配器(Adapter):通过包装一个需要适配的对象,把原接口转换成目标接口。

3、实现方式

1).类适配器(采用继承实现)

2).对象适配器(采用对象组合方式实现)

4、类适配器

类适配器是通过继承类和实现接口来完成的,因此叫类适配器。
实例:
以type-c接口听歌为例。
假设我们有一部手机(type-c接口),一个耳机(圆孔),这时候我们需要一个中间的type-c 转换器才可以听歌,
1)首先我们有一部手机,可以播放音乐听歌,但是它不能直接出入耳机

// 需要适配的类:
public class Phone {public void playMusic() {System.out.println("播放音乐中");}
}

2)然后我们需要一个转换器,也就是type-c的转接口(也就是我们上面说的目标接口)

// 目标接口
public interface TypeC {/*** 处理转换器*/void handleTypeC();
}

3)再定义一个适配器继承手机,连接转换器。

/*** @Description: 适配器* @ClassName: Adapter* @Author: weisn* @Date: 2023/3/9 10:29* @Version: 1.0*/
public class Adapter extends Phone implements TypeC {/*** 处理转换器*/public void handleTypeC() {System.out.println("处理器转换中");// 可以听音乐了super.playMusic();}
}

4)东西都备齐了,但是还需要一个动作,那就是将转换器(type-c)插到手机上,当然,这一步就需要人去实现了。

public class Person {// 这个人准备用耳机听歌,他需要一个type-c转换器public void listenToMusic(TypeC typeC) {System.out.println("准备开始听音乐");typeC.handleTypeC();}public static void main(String[] args) {// 人想听歌,需要一个适配器Person person = new Person();Adapter adapter = new Adapter();// 实现听歌person.listenToMusic(adapter);}}

运行结果
运行结果

5、对象适配器

对象适配不是使用多继承或者继承实现接口的方式实现,而是使用直接关联引用的方式。
1) 更改适配器代码如下:

public class Adapter1 implements TypeC {private Phone phone;// 构造方式初始化具体的类public Adapter1(Phone phone) {this.phone = phone;}/*** 处理转换器*/public void handleTypeC() {System.out.println("处理器转换中");// 可以听音乐了phone.playMusic();}
}

2)具体实现和使用

public class Person {// 这个人准备用耳机听歌,他需要一个type-c转换器public void listenToMusic(TypeC typeC) {System.out.println("准备开始听音乐");typeC.handleTypeC();}public static void main(String[] args) {
//        // 人想听歌,需要一个适配器
//        Person person = new Person();
//        Adapter adapter = new Adapter();
//        // 实现听歌
//        person.listenToMusic(adapter);Person person = new Person();Phone phone = new Phone();Adapter1 adapter = new Adapter1(phone);person.listenToMusic(adapter);}}

总结

推荐使用对象适配器。
因为类适配器是通过继承对象和接口来完成,java不支持具体类的多继承,所以一个适配器只能继承一个具体类或者抽象类。
而类适配器是通过直接关联对象的方式完成的,一个适配器可以关联多个具体对象。

http://www.lryc.cn/news/35505.html

相关文章:

  • 【微服务】—— 初识微服务
  • Unity使用webSocket与服务器通信(二)——C#服务器端使用Fleck时的简单服用方法
  • 【Linux】线程概念 | 线程控制
  • pocsuite3安装及使用
  • docker从安装到部署一个项目
  • QT编程从入门到精通之十二:“第四章:Qt程序创建基础”之“4.1 创建基础程序”
  • 黑客入门教程【非常详细】从零基础入门到精通,看这一篇就够了!
  • 手机怎么远程控制腾讯云云服务器?
  • dorcker与vlu靶场搭建
  • Unity性能优化 - Overdraw篇
  • Tp5操作mysql json函数
  • 【蓝桥杯嵌入式】PWM的设置,原理图解析与代码实现(第十一届省赛为例)——STM32
  • Learning C++ No.13【STL No.3】
  • 推荐收藏!10大程序员必备生产力工具
  • 【项目总结】基于SSM+SpringBoot+Redis的个人博客系统项目总结
  • 从入门到精通MongoDB数据库系列之一:MongoDB简介
  • 大数据系列——什么是hdfs?hdfs用来干什么的?
  • 云端地球2月更新了这些功能,你都用过了吗?
  • 基于gin-vue-admin[gin+gorm]手动实现crud(全)
  • 彻底关闭Windows10更新!!
  • 跨时钟域CDC
  • JavaEE简单示例——Spring的控制反转
  • DBT 收购 Transform,指标平台已成现代数据栈关键拼图
  • @Value注解取不到值的几种错误
  • 听客户说|东台农商银行:建立健全数据安全管理制度的探索与实践
  • Benchbot环境安装记录
  • Barrett模乘与蒙哥马利模乘算法
  • slice方法
  • DevOps工具集合
  • 手把手教你安装Linux!!!