软考2016年上半年第六题(适配器模式)与手术训练系统项目适配器模式的应用

软考2016年上半年第六题

在这里插入图片描述

public class Address {public void street(){System.out.println("a");};public void zip(){};public void city(){};
}
package org.example.适配器模式;/*** 适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。** @author lst* @date 2023年12月01日 9:13*/
public class DutchAddressAdapter extends DutchAdress {private (1);//原题没有这个参数private Boolean isHenan;/*** 这个适配器的设计思路是,当处理河南地址时,调用原先 DutchAdress 类的方法,而对于其他地址,调用 Address 接口的方法。适配器的作用是在两个不同的接口之间建立桥梁,使得它们可以协同工作,从而达到复用已有功能的目的。** @param addr* @param isHenan* @return null* @author lst* @date 2023/12/1 9:53*/public DutchAddressAdapter(Address addr) {address = addr;}//  public void straat() {//      if (isHenan) {
//			
//        } else {//           super.straat();  // 如果是河南,调用原先的继承方法//       }
//    }public void straat() {(2)}public void postcode() {(3)}public void plaats() {(4)}
}
package org.example.适配器模式;/*** @author lst* @date 2023年12月01日 9:11*/
class DutchAdress {public void straat(){System.out.println("b");};public void postcode(){};public void plaats(){};
}
package org.example.适配器模式;/*** @author lst* @date 2023年12月01日 9:21*/
public class Text {public static void main(String[] args) {Address addr=new Address();(5)// DutchAddressAdapter addrAdapter=new DutchAddressAdapter(addr,false);System.out.println("\n The DutchAddress \n");testDutch(addrAdapter);}private static void testDutch(DutchAdress addr) {addr.straat();addr.postcode();addr.plaats();}
}

答案

(1)Address address
(2)address.street();
(3)address.zip();
(4)address.city();
(5)DutchAddressAdapter addrAdapter=new DutchAddressAdapter(addr)

适配器模式的应用

这里是对象的适配器模式的用法,这里的设计看起来是为了在 SpecRecorderService 接口中提供一个更特定的方法 getRecordByTaskIdFormatList,以适应控制器的需要,而 RecorderService 接口提供了更通用的方法。
作用就是前端要求传过去的数据类型是List替代Map<String, RemarkScoreEx>

/*** 针对表user的数据库操作Service*/
public interface RecorderService extends IService<Recorder> {/*** 根据任务id获取成绩** @param taskId* @return java.util.Map<java.lang.String, com.wego.training.dto.RemarkScoreEx>* @author lst* @date 2023/10/7 9:38*/Map<String, RemarkScoreEx> getRecordByTaskId(String taskId);
}@Component
public class SpecRecorderServiceAdapter implements SpecRecorderService {private RecorderService recorderService;public SpecRecorderServiceAdapter(RecorderService recorderService) {this.recorderService = recorderService;}@Overridepublic List<RemarkScoreEx> getRecordByTaskIdFormatList(String taskId) {return recorderService.getRecordByTaskId(taskId).values().stream().collect(Collectors.toList());}
}@RestController
@RequestMapping("record")
public class RecordController {@Autowiredprivate RecorderService recorderService;@GetMapping("getRecordByTaskIdFormatList")public CommonResult getRecordByTaskIdFormatList(String taskId) {SpecRecorderServiceAdapter specRecorderServiceAdapter = new SpecRecorderServiceAdapter(recorderService);List<RemarkScoreEx> list = specRecorderServiceAdapter.getRecordByTaskIdFormatList(taskId);return CommonResult.success(list);}
}

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

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

相关文章

Python自动化办公入门教程

个人网站 文章首发于公众号&#xff1a;小肖学数据分析 1. 简介 在职场中&#xff0c;自动化已经成为提升工作效率的关键手段。作为一种强大且易于学习的编程语言&#xff0c;Python为执行各种自动化任务提供了众多便利。 无论是数据分析、报告生成、邮件处理还是网络数据采…

ocr识别过程中的python知识点总结

一、Python [::-1]的简单理解与用法 从结果上来看&#xff0c;[::-1]的作用是对列表进行翻转&#xff0c;比方说&#xff1a; a [1, 2, 3, 4, 5] print(a[::-1]) b "12345" print(b[::-1]) 输出&#xff1a; [5, 4, 3, 2, 1] 54321 可以发现这个东西的用法和re…

Beta冲刺随笔-DAY4-橘色肥猫

这个作业属于哪个课程软件工程A这个作业要求在哪里团队作业–站立式会议Beta冲刺作业目标记录Beta冲刺Day4团队名称橘色肥猫团队置顶集合随笔链接Beta冲刺笔记-置顶-橘色肥猫-CSDN博客 文章目录 SCRUM部分站立式会议照片成员描述 PM报告项目程序&#xff0f;模块的最新运行图片…

设计模式-结构型模式之装饰者设计模式

文章目录 六、装饰者模式 六、装饰者模式 装饰者模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其结构。它是作为现有的类的一个包装。 装饰类和被装饰类可以独立发展&#xff0c;不会相互耦合&#xff0c;装饰者模…

力扣题:字符串的反转-11.22

力扣题-11.22 [力扣刷题攻略] Re&#xff1a;从零开始的力扣刷题生活 力扣题1&#xff1a;541. 反转字符串 II 解题思想&#xff1a;进行遍历翻转即可 class Solution(object):def reverseStr(self, s, k):""":type s: str:type k: int:rtype: str"&quo…

DAPP开发【05】ERC20/ERC721简介

ERC20是以太坊上最受欢迎和广泛使用的代币标准之一。ERC20代币符合一组通用规则&#xff0c;包括代币的转账方法和余额查询方法。这些规则使得 ERC20 代币易于与钱包、交易所和其他合约进行集成和交互。 ERC20标准规定了代币合约必须实现以下6个函数&#xff1a; balanceOf(ad…

【Python】tensorflow学习的个人纪录(2)

actor.learn(s, a, td_error)def learn(self, s, a, td):s s[np.newaxis, :]feed_dict {self.s: s, self.a: a, self.td_error: td}_, exp_v self.sess.run([self.train_op, self.exp_v], feed_dict)return exp_v输入变量的数值&#xff1a; 步进&#xff1a; []---->[…

JavaWeb(二)

一、SQL简介 结构化查询语言&#xff0c;一门操作关系型数据库的编程语言。英文&#xff1a;Structured Query Language&#xff0c;简称 SQL。 二、Mysql和Oracle关于区分大小写 MySQL在Windows下都不区分大小写。 oracle中分为两种情况&#xff0c;单纯的sql语句不区分大小…

漏洞扫描服务是什么

漏洞扫描服务是维护网络安全的重要一环。通过定期或实时的漏洞扫描&#xff0c;组织可以及时发现并修复可能存在的安全威胁&#xff0c;增强自身网络的安全性。在选择漏洞扫描服务时&#xff0c;需要明确自身的需求和目标&#xff0c;并选择合适的工具和服务提供商。只有这样&a…

在一个没有超级用户的mongodb 生产库上如何添加超级用户

说来这个问题&#xff0c;都觉得不可思议&#xff0c;一个数据库怎么没有超级用户呢&#xff0c;我们知道&#xff0c;MYSQL&#xff0c;PG&#xff0c;ORACLE等&#xff0c;创建好后&#xff0c;都有一个默认的超级用户&#xff0c;MONGODB也有超级用户&#xff0c;但需要自己…

前端分片上传

前端分片上传是一种将大文件分成若干个小块进行上传的方式&#xff0c;以解决大文件上传时网络不稳定或上传速度慢的问题。下面是前端分片上传的基本步骤&#xff1a; 使用JavaScript读取文件&#xff0c;将文件分成若干块。可以使用File API来实现这个功能。使用XMLHttpReque…

使用VC++实现锐化处理(使用Sobel算子、Prewitt算子、Isotropic算子)

使用VC实现锐化处理&#xff08;使用Sobel算子、Prewitt算子、Isotropic算子&#xff09; 获取源工程可访问gitee可在此工程的基础上进行学习。 该工程的其他文章&#xff1a; 01- 一元熵值、二维熵值 02- 图像平移变换&#xff0c;图像缩放、图像裁剪、图像对角线镜像以及图像…

Vxworks6.9的在线gdb调试(仿真内核和板载内核)

创作目的&#xff1a;归纳总结常用的技巧和方法&#xff0c;方便自己后续查阅重点节省时间。 一、仿真内核的gdb调试 1、新建DKM工程&#xff0c;选择sim的BSP包 2、DKM工程中添加c文件并编辑入口函数 3、新建vxworks远端系统 4、显示系统起来之后进行加载.out 5、选择Debug模…

基于hadoop下的Kafka分布式安装

简介 Kafka是一种分布式流处理平台&#xff0c;它具有高吞吐量、可扩展性、可靠性、实时性和灵活性等优点。它能够支持每秒数百万条消息的传输&#xff0c;并且可以通过增加节点来增加吞吐量和存储容量。Kafka通过将数据复制到多个节点来实现数据冗余和高可用性&#xff0c;即使…

Linux脚本awk命令

目录 一. awk命令简介 1. awk版本 2. awk与vim的区别 3. awk与sed的区别 4. awk工作原理 5. awk格式 6. awk常用选项 二. awk基础用法 1. awk基础用法 2. BEGIN和END语句块 3. 指定分隔符 4. 首尾关键字 三. awk内置变量 1. FS变量 2. OFS变量 3. RS变量 4. NF…

代码随想录算法训练营第五十三天 | 1143.最长公共子序列,1035.不相交的线,53. 最大子序和 动态规划

目录 1143.最长公共子序列 1035.不相交的线 53. 最大子序和 动态规划 1143.最长公共子序列 题目链接&#xff1a;1143. 最长公共子序列 &#xff08;1&#xff09;dp[ i ][ j ] 表示 text1 前 i 个元素、text2 前 j 个元素的最长公共子序列的长度&#xff1b; &#xff08;2&a…

在 Linux 上修改 Oracle 控制文件、日志文件和数据文件的目录的脚本

以下是一个交互式的 Bash 脚本示例&#xff0c;用于在 Linux 上修改 Oracle 数据库控制文件、日志文件和数据文件的目录。脚本会要求您输入要修改的路径&#xff0c;并根据输入的路径执行相应的修改操作。 #!/bin/bash# 修改以下变量以匹配您的 Oracle 数据库设置 ORACLE_SID&…

30、LCD1602

LCD1602介绍 LCD1602&#xff08;Liquid Crystal Display&#xff09;液晶显示屏是一种字符型液晶显示模块&#xff0c;可以显示ASCII码的标准字符和其它的一些内置特殊字符&#xff0c;还可以有8个自定义字符 显示容量&#xff1a;162个字符&#xff0c;每个字符为5*7点阵 …

理解SpringIOC和DI第一课(Spring的特点),IOC对应五大注解,ApplicationContext vs BeanFactory

Spring是一个包含众多工具等Ioc容器 对象这个词在Spring范围内&#xff0c;称为bean Spring两大核心思想 1.IOC (IOC是控制反转&#xff0c;意思是控制权反转-控制权&#xff08;正常是谁用这个对象&#xff0c;谁去创建&#xff0c;&#xff09;-控制对象的控制权&#xf…

Vue2 模版编译及生命周期钩子 总结归纳

一. 在beforeCreate生命周期钩子被调用之前&#xff0c;其实还有两个阶段&#xff1a; (1) 编译阶段。 如果使用了构建步骤&#xff0c;例如使用了单文件组件【.vue文件】&#xff0c;则会在此阶段进行&#xff1a; 对模板进行解析和编译&#xff0c;并生成渲染函数。编译过程…