一句话设计模式12:适配器模式

news2025/2/27 1:49:26

适配器模式: 继承原对象,持有目标对象;


文章目录

  • 适配器模式: 继承原对象,持有目标对象;
  • 前言
  • 一、适配器模式的作用
  • 二、如何适配器模式
    • 直接上代码
  • 总结


前言

适配器模式一般使用场景是: 将一个类(接口)转换成客户希望的另外一个类(接口)。其中适配器充当一个假的原类的作用;


一、适配器模式的作用

主要解决在软件系统中,常常要将一些"现存的对象"放到新的环境中,而新环境要求是现有接口无法满足的;

二、如何适配器模式

例如我现在只能获取到一个类是Target,但是我想用另一个类 NewTarget 中的sout方法,这里我们就需要做一个适配

适配之后,当前依赖的是适配的类, 并不是 NewTarget ,做到了解耦

直接上代码

  1. 我目前持有的对象Target
public class Target {

    public void required() {
        System.out.println("正常的方法访问!");
    }
}
  1. 我要调用的目标对象NewTarget
public class NewTarget {

    public void sout() {
        System.out.println("难搞客户的特殊方法请求!");
    }
}

  1. 适配器
/**
 * 适配器: 继承原有对象,持有目标对象
 */
public class Adapter extends Target {

    NewTarget newTarget = new NewTarget();

    @Override
    public void required() {
        newTarget.sout();
    }
}
  1. 测试类中测试
public class Client {

    // 目标对象是NewTarget
    public static void main(String[] args) {
        // 我能拿到的
        Target target = new Adapter();
        target.required();
    }
}

执行结果:
调用的是目标类中的方法

总结

  1. 表面上,我依然调用的Target方法
  2. 但是Adapter继承了Target,并重写了它的方法
  3. 表面上调用Target实际上调用的是Adapter,而Adapter实际上调用的是目标NewTarget中的sout方法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1027295.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

读高性能MySQL(第4版)笔记12_查询性能优化(下)

1. “快速、精确和实现简单” 1.1. 三者永远只能满足其二,必须舍掉一个 2. 排序优化 2.1. 无论如何排序都是一个成本很高的操作,所以从性能角度考虑,应尽可能避免排序或者尽可能避免对大量数据进行排序 2.2. 文件排序(filesor…

数组和指针笔试题解析之【指针】

目录 🍂笔试题1: 🍂笔试题2: 🍂笔试题3: 🍂笔试题4: 🍂笔试题5: 🍂笔试题6: 🍂笔试题7: 🍂笔试题…

实施主品牌进化战略(一):确立主品牌进化架构

主品牌进化战略,即以主品牌为核心创造、巩固、转化竞争优势应对竞争环境变化,避免衰退,回归增长,让主品牌进化的方法论体系。主品牌进化战略制定要从 4 个方面出发:确立主品牌进化架构、更新和明确主品牌竞争方向、建立…

Java高级-注解

注解 1.介绍2.元注解3.注解的解析4.注解的应用场景 1.介绍 注解 Annotation 就是Java代码里的特殊标记,作用是让其他程序根据注解信息来决定什么是执行该程序注解:注解可以在类上、构造器上、方法上、成员变量上、参数上等位置 自定义注解 /*** 自定…

【产品经理】深入B端SaaS产品设计核心理念

这几年各企业的B端业务都在做SaaS平台,但对SaaS的了解还不是完全全面,对于一些产品的定位以及设计还在探索中 本文讨论“为什么采用SaaS模式”、“SaaS产品有哪些”以及“如何做好SaaS产品设计”三个话题,核心是产品设计,主要从需…

Qt5开发及实例V2.0-第九章-Qt文件及磁盘处理

Qt5开发及实例V2.0-第九章-Qt文件及磁盘处理 第9章 Qt 5文件及磁盘处理9.1 读写文本文件9.1.1 QFile类读写文本9.1.2 QTextStream类读写文本 9.2 读写二进制文件9.3 目录操作与文件系统9.3.1 文件大小及路径获取实例9.3.2 文件系统浏览 9.4 获取文件信息9.5 监视文件和目录变化…

由于数字化转型对集成和扩展性的要求,定制化需求难以满足,百数低代码服务商该如何破局?

当政策、技术环境的日益成熟,数字化转型逐步成为企业发展的必选项,企业数字化转型不再是一道选择题,而是决定其生存发展的必由之路。通过数字化转型升级生产方式、管理模式和组织形式,激发内生动力,成为企业顺应时代变…

Nacos服务列表有服务,但是配置列表不起作用。

目录 bug现场解决思路POM文件启动日志排查完整pom文件nacos配置中心部署流程 想要重新再写一下springcloud alibaba 的组件配置,再另一个服务renren-product引入,nacos的注册发现和配置中心。前面都很顺利但是修改配置中心配置的时候不起作用&#xff01…

Spring Boot实现对超大文件进行异步压缩下载

在Web应用中,文件下载功能是一个常见的需求,特别是当你需要提供用户下载各种类型的文件时。本文将演示如何使用Spring Boot框架来实现一个简单而强大的文件下载功能。我们将创建一个RESTful API,通过该API,用户可以下载问价为ZIP压…

linux下CentOS安装mysql-5.7

linux下安装mysql只需要在root用户下安装,普通用户也能使用 1.检查: 通过以下两条命令查看改系统下是否已存在mysql。 ps ajx | grep mysql ps ajx | grep mariadb通过指令如果只显示如下两条信息,则当前系统下不存在MySQL。 就可以直接进…

蓝牙电话之HFP—电话音频

1 媒体音频: 播放蓝牙音乐的数据,这种音频对质量要求高,数据发送有重传机制,从而以l2cap的数据形式走ACL链路。编码方式有:SBC、AAC、APTX、APTX_HD、LDAC这五种编码方式,最基础的编码方式是SBC&#xff0…

手撕二叉树

前序遍历构建二叉树 二叉树的销毁 二叉树的结点个数 二叉树叶子节点个数 二叉树第k层节点个数 二叉树查找值为x的节点 二叉树前序遍历 二叉树中序遍历 二叉树后序遍历 二叉树的层序遍历 判断二叉树是否是完全二叉树 完整代码 test.c #define _CRT_SECURE_NO_WARNINGS 1#incl…

网络防御--防火墙

拓扑 Cloud 1 作为电脑与ENSP的桥梁 防火墙配置 登录防火墙 配置IP地址及安全区域 添加地址对象 配置策略 1、内网可以访问服务器 结果 2、内网可以访问公网 结果 配置NAT策略 结果

注入之SQLMAP(工具注入)

i sqlmap是一个自动化的SQL注入工具,其主要功能是扫描,发现并利用给定的URL和SQL注入漏洞,其广泛的功能和选项包括数据库指纹,枚举,数据库提权,访问目标文件系统,并在获取操作权限时执行任…

【Java 基础篇】Java多线程编程详解:线程创建、同步、线程池与性能优化

Java是一门强大的编程语言,其中最引人注目的特性之一是多线程支持。多线程允许我们在同一程序中同时执行多个任务,这大大提高了应用程序的性能和响应能力。本文将深入介绍Java线程的基础知识,无论您是初学者还是有一些经验的开发人员&#xf…

Qt5开发及实例V2.0-第八章-Qt模型/视图结构

Qt5开发及实例V2.0-第八章-Qt模型/视图结构 第8章 Qt 5模型/视图结构8.1 概述8.1.1 基本概念8.1.2 【实例】:模型/视图类使用 8.2 模型(Model)8.3 视图(View)8.4 代理(Delegate) 本章相关例程源…

2023.9.19 关于 数据链路层 和 DNS 协议 基本知识

目录 数据链路层 MTU DNS 协议 补充 DHCP协议 数据链路层 基本概念: 考虑相邻两个节点之间的传输(通过 网线 / 光纤 / 无线 直接相连的两个设备)以太网协议 规定了 数据链路层 和 物理层 的内容 IP地址 与 mac地址 的相互配合 IP地址 描…

ardupilot的编译过程

环境 树莓派4b ubuntu20.04 git 2.25.1 python3.8.10 pixhawk2.4.8 下载源码 (已经配置好git环境和ssh) git clone --recurse-submodules gitgithub.com:ArduPilot/ardupilot.gitcd ardupilotgit status使用git status检查是否下载完整 如果不完整&a…

Nuxt 菜鸟入门学习笔记:路由

文章目录 路由 Routing页面 Pages导航 Navigation路由参数 Route Parameters路由中间件 Route Middleware路由验证 Route Validation Nuxt 官网地址: https://nuxt.com/ 路由 Routing Nuxt 的一个核心功能是文件系统路由器。pages/目录下的每个 Vue 文件都会创建一…

hadoop测试环境sqoop使用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Sqoop看这篇文章就够了_must contain $conditions in where clause._SoWhat1412的博客-CSDN博客 大数据环境 C:\Windows\System32\drivers\etc 修改ip和hostname的对应关系 1…