策略模式、工厂模式和模板模式的应用
1、策略模式、工厂模式解决if else
Cal
package com.example.dyc.cal;import org.springframework.beans.factory.InitializingBean;public interface Cal extends InitializingBean {public Integer cal(Integer a, Integer b);
}
Cal工厂
package com.example.dyc.cal;import org.springframework.util.StringUtils;import java.util.HashMap;public class CalFactory {public static HashMap<String, Cal> calMap = new HashMap<>();public static Cal getCal(String name){return calMap.get(name);}public static void register(String name, Cal cal){if(StringUtils.isEmpty(name)||null == cal){return;}calMap.put(name,cal);}
}
Cal具体实现Add
package com.example.dyc.cal;import org.springframework.stereotype.Component;@Component
public class Add implements Cal {@Overridepublic Integer cal(Integer a, Integer b) {return a + b;}// public Add(){
// CalFactory.register("add", this);
// }@Overridepublic void afterPropertiesSet() throws Exception {CalFactory.register("add", this);}
}
Cal具体实现Sub
package com.example.dyc.cal;import org.springframework.stereotype.Component;@Component
public class Sub implements Cal{@Overridepublic Integer cal(Integer a, Integer b) {return a - b;}// public Sub(){
// CalFactory.register("sub", this);
// }@Overridepublic void afterPropertiesSet() throws Exception {CalFactory.register("sub", this);}
}
测试类
package com.example.dyc.cal;import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;@SpringBootTest
class CalFactoryTest {@Testvoid MyTest(){Cal add = CalFactory.getCal("add");Integer cal = add.cal(1, 8);System.out.println(cal);}
}
测试类具体使用参考以往操作
2、策略模式、工厂模式,模板模式实现代码复用
Cal
package com.example.dyc.cal;import org.springframework.beans.factory.InitializingBean;public abstract class Cal implements InitializingBean {protected abstract Integer cal(Integer a, Integer b);public Integer secretCal(Integer a, Integer b){a = secretCode(a);b = secretCode(b);Integer cal = cal(a, b);return cal;}private Integer secretCode(Integer a){return a * a;}// Integer unsupport(){
// throw new UnsupportedOperationException();
// }
}
Cal工厂
package com.example.dyc.cal;import org.springframework.util.StringUtils;import java.util.HashMap;public class CalFactory {public static HashMap<String, Cal> calMap = new HashMap<>();public static Cal getCal(String name){return calMap.get(name);}public static void register(String name, Cal cal){if(StringUtils.isEmpty(name)||null == cal){return;}calMap.put(name,cal);}
}
Cal具体实现Add
package com.example.dyc.cal;import org.springframework.stereotype.Component;@Component
public class Add extends Cal {@Overrideprotected Integer cal(Integer a, Integer b) {return a + b;}// public Add(){
// CalFactory.register("add", this);
// }@Overridepublic void afterPropertiesSet() throws Exception {CalFactory.register("add", this);}
}
Cal具体实现Sub
package com.example.dyc.cal;import org.springframework.stereotype.Component;@Component
public class Sub extends Cal{@Overrideprotected Integer cal(Integer a, Integer b) {return a - b;}// public Sub(){
// CalFactory.register("sub", this);
// }@Overridepublic void afterPropertiesSet() throws Exception {CalFactory.register("sub", this);}
}
测试类
package com.example.dyc.cal;import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;@SpringBootTest
class CalFactoryTest {@Testvoid MyTest(){Cal add = CalFactory.getCal("add");Integer cal = add.secretCal(1, 8);System.out.println(cal);}
}
测试类具体使用参考以往操作
相关文章:
策略模式、工厂模式和模板模式的应用
1、策略模式、工厂模式解决if else Cal package com.example.dyc.cal;import org.springframework.beans.factory.InitializingBean;public interface Cal extends InitializingBean {public Integer cal(Integer a, Integer b); }Cal工厂 package com.example.dyc.cal;impo…...
在postman中调试supabase的API接口
文章目录 在supabase中获取API地址和key知道它的restfull风格在postman中进行的设置1、get请求调试2、post新增用户调试3、使用patch更新数据,不用put!4、delete删除数据 总结 在supabase中获取API地址和key 首先登录dashboard后台,首页- 右…...
微信小程序毕业设计-英语互助系统项目开发实战(附源码+论文)
大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:微信小程序毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计…...
【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第49课-机器人自动跳舞
【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第49课-机器人自动跳舞 使用dtns.network德塔世界(开源的智体世界引擎),策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtns.network是一款主要由JavaScript编写的智体世界引擎…...
【LLM教程-llama】如何Fine Tuning大语言模型?
今天给大家带来了一篇超级详细的教程,手把手教你如何对大语言模型进行微调(Fine Tuning)!(代码和详细解释放在后文) 目录 大语言模型进行微调(Fine Tuning)需要哪些步骤? 大语言模型进行微调(Fine Tuning)训练过程及代码 大语言…...
PHP 比 Java 的开发效率高在哪?
在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「JAVA的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!!做了几年PHP,最近…...
高德定位获取详细位置失败的处理方法
在使用高德地图定位功能获取位置信息有时候会获取详细位置失败,但是经纬度是有的,这种情况下怎么处理呢,可以使用逆地理编码通过返回的经纬度来再次获取位置信息,如果再次失败那么获取详细位置信息就失败了。 具体工具类如下: package com.demo.map.utils;import androi…...
PX2平台Pytorch源码编译
写在前面:以下内容完成于2019年底,只是把笔记放到了CSDN上。 需要注释掉NCLL及分布式相关的配置 libcudart.patch diff --git a/torch/cuda/__init__.py b/torch/cuda/__init__.py index 4591702..07e1268 100644 --- a/torch/cuda/__init__.pyb/torc…...
昇思25天学习打卡营第6天|简单的深度学习模型实战 - 函数式自动微分
自动微分(Automatic Differentiation)是什么?微分是函数在某一处的导数值,自动微分就是使用计算机程序自动求解函数在某一处的导数值。自动微分可用于计算神经网络反向传播的梯度大小,是机器学习训练中不可或缺的一步。 这些公式难免让人头大…...
基于Linux的云端垃圾分类助手
项目简介 本项目旨在开发一个基于嵌入式系统的智能垃圾分类装置。该装置能够通过串口通信、语音播报、网络通信等多种方式,实现垃圾的自动识别和分类投放。系统采用多线程设计,确保各功能模块高效并行工作。 项目功能 垃圾分类识别 系统使用摄像头拍摄…...
【PYG】Planetoid中边存储的格式,为什么打印前十条边用edge_index[:, :10]
edge_index 是 PyTorch Geometric 中常用的表示图边的张量。它通常是一个形状为 [2, num_edges] 的二维张量,其中 num_edges 表示图中边的数量。每一列表示一条边,包含两个节点的索引。 实际上这是COO存储格式,官方文档里也有写,…...
【知识图谱系列】(实例)python操作neo4j构建企业间的业务往来的知识图谱
本章节通过聚焦于"金额"这一核心属性,构建了一幅知识图谱,旨在揭示"销售方"与"购买方"间的商业互动网。在这张图谱中,绿色节点象征着购买方,而红色节点则代表了销售方。这两类节点间的紧密连线&…...
解决MySQL删除/var/lib/mysql下的所有文件后无法启动的问题
解决MySQL删除/var/lib/mysql下的所有文件后无法启动的问题 确保清空/var/lib/mysql初始化启动mysql参考 确保清空/var/lib/mysql rm-rf /var/lib/mysql/* 初始化 mysql_install_db --usermysql --basedir/usr --datadir/var/lib/mysql 其中的mysql用户不要改成root。否则会…...
探索WebKit的Flexbox奇境:CSS Flexbox支持全解析
探索WebKit的Flexbox奇境:CSS Flexbox支持全解析 在现代网页设计中,响应式布局的需求日益增长,CSS Flexbox作为布局模式的一个突破性进展,提供了一种更加高效和灵活的方式来设计复杂的用户界面。WebKit,作为众多流行浏…...
Unity--协程--Coroutine
Unity–协程–Coroutine 1. 协程的基本概念 基本概念:不是线程,将代码按照划分的时间来执行,这个时间可以是具体的多少秒,也可以是物理帧的时间,也可以是一帧的绘制结束的时间。 协程的写法:通过返回IEnumerator的函数实现,使用yield return语句暂停执…...
详解COB显示屏的技术特点
COB(Chip on Board)显示屏作为一种采用倒装COB封装技术的LED显示屏,在显示效果以及使用稳定性跟防护性方面,拥有更大优势,今天跟随COB显示屏厂家中品瑞科技一起来看看,COB显示屏的技术特点: 1、…...
富唯智能推出的AMR复合机器人铝板CNC上下料方案
随着科技的不断进步,CNC加工行业正面临着前所未有的变革。传统的CNC上下料方式已无法满足现代生产对效率、精度和安全性的高要求。在这样的背景下,富唯智能推出的AMR复合机器人铝板CNC上下料方案,以其智能化、自动化的特点,引领了…...
springcloud-config服务器,同样的配置在linux环境下不生效
原本在windows下能争取的获取远程配置但是部署到linux上死活都没有内容,然后开始了远程调试,这里顺带讲解下获取配置文件如果使用的是Git源,config service是如何响应接口并返回配置信息的。先说问题,我的服务名原本是abc-abc-abc…...
写代码,为什么还需要作图?
引言 古人云 :一图胜千言,闲人说:无图无真相。 在日常的聊天工具当中,无论是使用微信,还是钉钉。使用图片或表情包的频次越来越高,那是为什么呢?其实在互联网没有那么发达的时候,我…...
一句话介绍什么是AI智能体?
什么是AI智能体? 一句话说就是利用各种AI的功能的api组合,完成你想要的结果。 例如你希望完成一个关于主题为啤酒主题的小红书文案图片,那么它就可以完成 前面几个步骤类似automa的组件,最后生成一个结果。...
SPIRAN ART SUMMONER图像生成前端展示效果优化技巧
SPIRAN ART SUMMONER图像生成前端展示效果优化技巧 1. 引言 你有没有遇到过这种情况:用SPIRAN ART SUMMONER生成了超棒的图片,但在网站上展示时却加载缓慢,用户还没看到效果就流失了?或者图片显示不完整,影响了整体的…...
PyTorch 2.8镜像部署教程:RTX 4090D配置htop实时监控GPU/CPU/内存使用
PyTorch 2.8镜像部署教程:RTX 4090D配置htop实时监控GPU/CPU/内存使用 1. 环境准备与快速部署 在开始之前,请确保您的硬件配置满足以下要求: 显卡:RTX 4090D 24GB显存内存:120GB及以上存储:系统盘50GB …...
Vue项目中天地图显示不全?试试这个MutationObserver的巧妙解法
Vue项目中天地图显示不全的终极解决方案:MutationObserver深度解析 第一次在Vue项目中集成天地图时,那种地图只渲染出一半的挫败感至今记忆犹新。控制台没有报错,API调用看起来也没问题,但地图就像被无形的剪刀裁切过一样…...
Vision Transformer在timm中的实现与优化
Vision Transformer在timm中的实现与优化 【免费下载链接】pytorch-image-models The largest collection of PyTorch image encoders / backbones. Including train, eval, inference, export scripts, and pretrained weights -- ResNet, ResNeXT, EfficientNet, NFNet, Visi…...
从make clean到build.prop:揭秘Android系统属性生成的完整链条
从make clean到build.prop:揭秘Android系统属性生成的完整链条 当你通过adb shell getprop ro.build.display.id查看设备版本号时,是否好奇过这个字符串背后的生成逻辑?在Android编译系统中,从Makefile执行到最终生成build.prop文…...
嵌入式开发必知:原码、反码与补码详解
1. 为什么嵌入式开发必须掌握原码、反码和补码作为一名在嵌入式领域摸爬滚打多年的工程师,我见过太多因为不理解底层数据表示而导致的诡异bug。记得刚入行时,我调试一个温度传感器项目,当温度低于零度时,读取的数值总是偏差127度。…...
告别SpeedGoat:低成本搭建Simulink Real-Time硬件在环(HIL)平台,基于PC+松下伺服实战
低成本搭建Simulink实时控制平台:基于PC与松下伺服的硬件在环方案 在工业自动化与运动控制领域,实时硬件在环(HIL)测试是验证算法有效性的关键环节。传统方案如SpeedGoat等专用设备虽性能稳定,但动辄数十万的成本让许多…...
MogFace人脸检测工具问题排查大全:从路径错误到权限问题的解决方案
MogFace人脸检测工具问题排查大全:从路径错误到权限问题的解决方案 1. 工具简介与常见问题概述 MogFace人脸检测工具是基于CVPR 2022发表的MogFace模型开发的本地高精度检测解决方案。它能够准确识别多尺度、多姿态以及部分遮挡的人脸,并自动标注检测框…...
AI辅助架构设计:让快马智能生成符合最佳实践的SpringBoot项目骨架
今天想和大家聊聊如何用AI工具快速搭建一个符合现代最佳实践的SpringBoot项目骨架。作为一个经常需要从零开始搭建项目的开发者,我发现传统的手动创建项目方式效率太低,而且容易遗漏一些关键配置。最近尝试了InsCode(快马)平台的AI辅助功能,发…...
避开这3个坑!Cortex-M3/M4使用DWT计数器时的常见错误与解决方法
Cortex-M3/M4开发实战:DWT计数器避坑指南与高阶应用技巧 在嵌入式系统开发中,精确的时间测量往往是性能优化和调试的关键。Cortex-M3/M4内核内置的DWT(Data Watchpoint and Trace)组件,特别是其CYCCNT计数器,为开发者提供了一个零…...
