设计模式-设配器模式

目录

🎊1.适配器模式介绍

🎃2.适配器类型 

🎏3.接口适配器 

🎐4.类的适配器  

🎎5.优缺点 


1.适配器模式介绍

  • 适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。
  • 这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。
  • 适配器继承或依赖已有的对象,实现想要的目标接口。

2.适配器类型 

  • 类的适配器模式

想将一个类转换成满足另一个新接口的类时,可以使用类的适配器模式,创建一个新类,继承原有的类,实现新的接口即可

  • 对象的适配器模式

想将一个对象转换成满足另一个新接口的对象时,可以创建一个适配器类,持有原类的一个实例,在适配器类的方法中,调用实例的方法就行

  • 接口的适配器模式

不想实现一个接口中所有的方法时,可以创建一个Adapter,实现所有方法,在写别的类的时候,继承Adapter类即

3.接口适配器 

创建支付接口,里面包含各种方法

/**
 * 支付接口
 */
public interface PayGateWay {

    /**
     * 统一下单
     */
    void unifiedOrder();

    /**
     * 退款
     */
    void refund();

    /**
     * 查询状态
     */
    void query();

    /**
     * 发红包
     */
    void sendRedPack();
}

创建适配器类实现支付接口,

public class Adapter implements PayGateWay{
    @Override
    public void unifiedOrder() {

    }

    @Override
    public void refund() {

    }

    @Override
    public void query() {

    }

    @Override
    public void sendRedPack() {

    }
}

具体的类, 因为我们具体的类用不完接口中的方法,如果全部实现会显得累赘,我们只需要使用适配器类实现支付接口,然后我们在继承适配器类,重写想要的方法即可

public class ProductVideoOrder extends Adapter{

    @Override
    public void unifiedOrder() {
        System.out.println("统一下单");
    }

    @Override

    public void refund() {
        System.out.println("退款");
    }
}

4.类的适配器  

老的类

/**
 * 老的类
 */
public class OldModule {

    public void  methodA(){
        System.out.println("老类的方法A");
    }

}

新的接口 

/**
 * 目标接口
 */
public interface TargetModule {

    /**
     * 和需要整合老的类的方法名一致
     */
    void methodA();

    /**
     * 新的方法
     */
    void methodB();

    void methodC();
}

适配器类


/**
 * 适配器类,继承老的类,实现新的接口
 */
public class AdapterModule extends OldModule implements TargetModule{
    @Override
    public void methodB() {
        System.out.println("新的接口的方法B");
    }

    @Override
    public void methodC() {
        System.out.println("新的接口的方法C");
    }
}

5.优缺点 

  • 优点
  • 1、可以让任何两个没有关联的类一起运行。
  • 2、提高了类的复用。
  • 3、增加了类的透明度。
  • 4、灵活性好。
  • 缺点

 1、过多地使用适配器,会让系统非常零乱,不易整体进行把握。因此如果不是很有必要,可以不使用适配器,而是直接对系统进行重构。

2.由于 JAVA 至多继承一个类,所以至多只能适配一个适配者类,而且目标类必须是抽象类。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

什么?想让视频号小店领先同行,竟然这么简单!

大家好,我是电商小布。 视频号小店从推出到现在,逐渐也是被越来越多的人所熟知了。 虽然说当前市场内部的商家数量并不多,竞争力不大。 但是在入驻之后想要领先同行商家,产生更好的店铺数据,该怎么来做呢&#xff1…

学习JavaEE的日子 Day29 yield,join,线程的中断,守护线程,线程局部变量共享,线程生命周期

Day29 多线程 12. 线程的礼让 Thread.yield(); 理解:此方法为静态方法,此方法写在哪个线程中,哪个线程就礼让 注意:所谓的礼让是指当前线程退出CPU资源,并转到就绪状态,接着再抢 需求:创建两个…

多叉树题目:N 叉树的后序遍历

文章目录 题目标题和出处难度题目描述要求示例数据范围进阶 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 解法三思路和算法代码复杂度分析 题目 标题和出处 标题:N 叉树的后序遍历 出处:590. N 叉树的后序遍历 难度 3 级 题目…

Android笔记(三十):PorterDuffXfermode实现旋转进度View

背景 核心原理是使用PorterDuffXfermode Path来绘制进度,并实现圆角 效果图 Android笔记(三十)效果演示 进度条绘制步骤 将ImageView矩形七个点的坐标存储起来(configNodes) 他们对应着7个不同的刻度,每个刻度的值 i * &#…

Unity | 射线检测及EventSystem总结

目录 一、知识概述 1.Input.mousePosition 2.Camera.ScreenToWorldPoint 3.Camera.ScreenPointToRay 4.Physics2D.Raycast 二、射线相关 1.3D(包括UI)、射线与ScreenPointToRay 2.3D(包括UI)、射线与ScreenToWorldPoint …

计算机基础,挑战全网最全解析

1.什么是计算机? 2.冯诺依曼结构 3.进制 4.摩尔斯码和布莱叶盲文 摩尔斯码 布莱叶盲文

如何使用群晖WebDAV实现固定公网地址同步Zotero文献管理器

文章目录 前言1. Docker 部署 Trfɪk2. 本地访问traefik测试3. Linux 安装cpolar4. 配置Traefik公网访问地址5. 公网远程访问Traefik6. 固定Traefik公网地址 前言 Trfɪk 是一个云原生的新型的 HTTP 反向代理、负载均衡软件,能轻易的部署微服务。它支持多种后端 (D…

蓝桥杯嵌入式学习笔记(6):IIC程序设计

目录 前言 1. IIC基本原理 2. 电路原理 3. 代码编程 3.1 预备工作 3.2 AT24C02写读功能编写 3.2.1 AT24C02写操作实现 3.2.2 AT24C02读操作实现 3.3 MCP4017写读功能编写 3.3.1 MCP4017写操作实现 3.3.2 MCP4017读操作实现 3.4 main.c编写 3.4.1 头文件引用 3.4.…

基于javaweb(springboot+mybatis)网上酒类商城项目设计和实现以及文档报告

基于javaweb(springbootmybatis)网上酒类商城项目设计和实现以及文档报告 博主介绍:多年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞…

Redis数据类型介绍和使用

数据类型 String(字符串):最基本的数据类型,可以存储任何类型的数据,如文本、数字等。Hash(哈希):用于存储字段-值对的散列集合,适用于存储对象。List(列表&…

鱼哥赠书活动第14期:看完这本《数字化运维》掌握数字化运维方法,构建数字化运维体系

鱼哥赠书活动第14期:看完这本《数字化运维》掌握数字化运维方法,构建数字化运维体系 主要内容:读者对象:赠书抽奖规则:往期赠书福利: 数字化转型已经成为大势所趋,各行各业正朝着数字化方向转型&#xff0c…

如何在群晖NAS搭建bitwarden密码管理软件并实现无公网IP远程访问

前言 作者简介: 懒大王敲代码,计算机专业应届生 今天给大家聊聊如何在群晖NAS搭建bitwarden密码管理软件并实现无公网IP远程访问,希望大家能觉得实用! 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖&am…

【数据结构】链表习题之环形链表的约瑟夫问题

👑个人主页:啊Q闻 🎇收录专栏:《数据结构》 🎉道阻且长,行则将至 前言 今天这道题目时牛客上的题目,名为环形链表的约瑟夫问题,很有趣的的一道题目 环形链表的约瑟…

申请免费域名证书

目录 背景: 域名证书是什么: 域名证书有哪些: 部署域名证书有什么用: 免费的域名证书在哪里申请: 背景: 域名是一个IP地址上的“面具” 。一个域名的目的是便于记忆和沟通的一组服务器的地址(网站&…

OpenHarmony开发知识点记录之ABI

OpenHarmony系统支持丰富的设备形态,支持多种架构指令集,支持多种操作系统内核;为了应用在各种OpenHarmony设备上的兼容性,本文定义了"OHOS" ABI(Application Binary Interface)的基础标准&#…

路由协议RIP(悄悄话)

实验要求:总部和两个分支,拓扑如下图,利用rip路由协议使得各个pc设备可以通信 RIP理解:相邻路由定期交换内部路由协议,最后达到稳定状态,如果发生网络发生变化,重复交换路由步骤直到稳定状态&a…

LinkedIn 互联网架构扩展简史

LinkedIn成立于 2003 年,其目标是连接到您的网络以获得更好的工作机会。第一周只有 2,700 名会员。时间快进了很多年,LinkedIn 的产品组合、会员基础和服务器负载都取得了巨大的增长。 如今,LinkedIn 在全球运营,拥有超过 3.5 亿会…

研华工控机610L学习笔记2:visualstudio与第一个C#程序

今日继续学习工控机 C# 编程相关知识: 这篇结束后我将先进行一段时间的C#的学习研究,并写一些C#的笔记 后续再更新工控机编程设计相关 目录 1、安装visualstudio: 2、创建第一个C#程序: 3、寻找C#解决方案源文件: …

梦幻西游端游全新升级瀚海游戏玩法 一单35 小白一手机没脑子实际操作 日入3000

大家好,很多人都听过抖音游戏外国投资者方案,但是大部分人做视频,收益都非常低。 今天给带来的项目是“梦幻西游端游全新升级瀚海游戏玩法,一单35,轻松日入3000”,这个项目不用去被割韭菜,我自…

IDEA | 资源文件中文乱码问题解决

问题 IDEA打开资源文件,显示乱码问题。 解决方案 1、电脑是mac,点击IDEA->【Preferences】->【Editor】->【File Encodings】 2、选择【Properties Files】中的UTF-8,并勾选Transparent native-to-ascii conversion。 3、最后点击…
最新文章