适配器设计模式

1.类适配器模式

 

package com.jmj.pattern.adapter.class_adapter;/*** 目标接口*/
public interface SDCard {//从SD卡中读取数据String readSD();//往SD卡中写数据void writeSD(String msg);}
package com.jmj.pattern.adapter.class_adapter;/*** 具体的SD卡类*/
public class SDCardImpl implements SDCard{@Overridepublic String readSD() {String msg="SDCard read msg : hello word SD";return msg;}@Overridepublic void writeSD(String msg) {System.out.println("SDCard write msg :" + msg);}
}
package com.jmj.pattern.adapter.class_adapter;/*** 适配者类的接口*/
public interface TFCard {//从TF卡中读取数据String readTF();//往TF卡中写数据void writeTF(String msg);}
package com.jmj.pattern.adapter.class_adapter;/*** 适配者类*/
public class TFCardImpl implements TFCard{@Overridepublic String readTF() {return "TFCard read msg: hello word TFCard";}@Overridepublic void writeTF(String msg) {System.out.println("TFCard write msg :"+msg);}}
package com.jmj.pattern.adapter.class_adapter;/*** 计算机类*/
public class Computer {//从SD卡中读取数据public String readSD(SDCard sdCard) {if (sdCard == null) {throw new NullPointerException("sd card is not null");}return sdCard.readSD();}}
package com.jmj.pattern.adapter.class_adapter;/*** 适配器类*/
public class SDAdapterTF extends TFCardImpl implements SDCard {@Overridepublic String readSD() {System.out.println("adapter read tf card");return readTF();}@Overridepublic void writeSD(String msg) {System.out.println("adapter wirte tf card");writeTF(msg);}
}
package com.jmj.pattern.adapter.class_adapter;public class Client {public static void main(String[] args) {Computer computer = new Computer();String s = computer.readSD(new SDCardImpl());System.out.println(s);System.out.println("=======================");//使用该电脑   读取TF卡中的数据//定义适配器类Computer computer1 = new Computer();String s1 = computer1.readSD(new SDAdapterTF());System.out.println(s1);}
}

2.对象适配器模式

package com.jmj.pattern.adapter.object_adapter;import com.jmj.pattern.adapter.class_adapter.TFCardImpl;/*** 适配器类*/
public class SDAdapterTF implements SDCard {private TFCard tfCard;public SDAdapterTF(TFCard tfCard){this.tfCard=tfCard;}@Overridepublic String readSD() {System.out.println("adapter read tf card");return tfCard.readTF();}@Overridepublic void writeSD(String msg) {System.out.println("adapter wirte tf card");tfCard.writeTF(msg);}
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言——深入理解指针(1)

目录 1.内存与地址 1.1 什么是内存 1.2 编址 2. 指针的变量和地址 2.1 取地址(&) 2.2 指针变量 2.3 解引用 2.4 指针变量大小 3. 指针变量类型存在的意义 3.1 不同类型指针的解引用 3.2 指针对整数的运算(,-&#…

关于 Google AMP 和 SEO

Google 于 2015 年首次推出 AMP,即加速移动页面。借助开源 AMP 框架,网页设计师可以制作快速加载的移动网页。该框架的创建是为了应对使用移动设备访问互联网的个人数量的增加。从那时起,谷歌一直在推动使用 AMP 来增强移动设备上的 SEO 和用…

MariaDB(基础信息)

文章目录 一、MariaDB1、基本信息2、存储引擎3、兼容性》MySQL、Postgres、MongoDB 和 Oracle4、直接连接其他数据源5、等等等。。。。。。。。。。。。。。。。。。。。。 二、操作和mysql一样参考文章 --------------------机翻内容仅供参考------------------------- 一、…

系列五、声明式事务(xml方式)

一、概述 声明式事务(declarative transaction management)是Spring提供的对程序事务管理的一种方式,Spring的声明式事务顾名思义就是采用声明的方式来处理事务。这里所说的声明,是指在配置文件中声明,用在Spring配置文件中声明式的处理事务来…

跨境电商贸易多币种处理:策略、方法与解决方案

在跨境电商中,企业需要与不同的跨境客户打交道,用客户喜欢的货币进行收款是一项很有挑战性的任务。现在,使用Zoho Books的高级多币种处理功能,这将变得毫不费力。 注:此功能在Zoho Books的精英版和旗舰版下可用。 商业全球化为商…

IIS 基线安全加固操作

目录 账号管理、认证授权 ELK-IIS-01-01-01 ELK-IIS-01-01-02 ELK-IIS-01-01-03 ELK-IIS-01-01-04 日志配置 ELK-IIS-02-01-01 ELK-IIS-02-01-02 ​​​​​​​ ELK-IIS-02-01-03 通信协议 ELK-IIS-03-01-01 设备其他安全要求 ELK-IIS-04-01-01 ​​​​​​​ ELK-I…

精益生产中的周转箱优势:提升效率与质量的得力利器

在当今竞争激烈的制造业中,企业追求高效生产和卓越质量是至关重要的。精益生产理念提供了一套有效的工具和方法,其中周转箱作为一个关键的组成部分,在优化生产流程、提高效率和质量方面发挥着重要作用。下面谈谈精益生产中的周转箱优势&#…

无人机在电力巡检中的应用

随着电力行业对电网安全需求的不断提升,传统的人工巡检方式逐渐凸显出劳动强度大、效率低的问题。这种状况迫使我们寻找更为高效和先进的解决方案。与传统方式相反,无人机的广泛应用为电力巡检注入了全新的活力。 一、电力巡检现存挑战:劳动强…

申请二级域名

1、登录腾讯云 腾讯云 产业智变云启未来 - 腾讯 (tencent.com) 2、进入我的域名,点击主域名 3、点击前往DNSPod管理 4、点击我的域名,然后点击主域名 5、点击添加记录,进行添加二级域名信息 6、添加相应二级域名信息 7、添加后需要进行验证…

Mysql并发时常见的死锁及解决方法

使用数据库时,有时会出现死锁。对于实际应用来说,就是出现系统卡顿。 死锁是指两个或两个以上的事务在执行过程中,因争夺资源而造成的一种互相等待的现象。就是所谓的锁资源请求产生了回路现象,即死循环,此时称系统处于…

多模态常见任务介绍

视觉问答(VQA, Visual Question Answer) 目标:给定一个图片以及问题,需要理解图片的内容并基于此用自然语言回答问题。 例如,图像中发生什么事,人物穿的衣服是什么颜色,图像中有多…

css引入的三种方式

css引入的三种方式 一、内联样式二、外部样式表三、 内部样式表总结trouble 一、内联样式 内联样式也被称为行内样式。它是将 CSS 样式直接应用于 HTML 元素的 style 属性中的一种方式 <p style"color: blue; font-size: 16px;">这是一个带有内联样式的段落。&…