策略模式+模版模式+工厂模式
工厂模式:
(1)避免类中出现过多的组合依赖
(2)同时减少代码中出现过多的if...else if...语句
(2)将调用者跟我们的实现类解耦
模版模式:
(1)功能复用
(2)方便扩展
策略模式:
(1)方便功能的扩展和维护
(2)防止过多的业务耦合
(3)避免使用多重条件判断
1. 抽象类
/*** 策略模式:不同类型选择不同的实现策略* */
public interface AbstractStrategy {/*** 模版模式:不同策略实现同一接口的共性部分(公共方法)* */default void commentMeth(){System.out.println("模版方法");}void handle(Object object);
}
2.抽象的实现
@Service
public class AchieveOneStrategy implements AbstractStrategy{@Overridepublic void handle(Object obj) {}
}
@Service
public class AchieveTwoStrategy implements AbstractStrategy{@Overridepublic void handle(Object object) {}
}
@Service
public class AchieveThreeStrategy implements AbstractStrategy{@Overridepublic void handle(Object object) {}
}
3.枚举
public enum StrategyTypeEnum {ONE_STRATEGY(0,AchieveOneStrategy.class),TWO_STRATEGY(1,AchieveTwoStrategy.class),THREE_STRATEGY(2,AchieveThreeStrategy.class),;Integer type;Class<? extends AbstractStrategy> aClass;StrategyTypeEnum(Integer type, Class<? extends AbstractStrategy> aClass){this.type = type;this.aClass = aClass;}
}
4.工厂
/*** 工厂模式:根据不同类型创建不同实例* */
@Service
public class StrategyFactory {@Autowiredprivate ApplicationContext applicationContext;static HashMap<Integer, Class<? extends AbstractStrategy>> strategyHashMap = new HashMap<>();static {for (StrategyTypeEnum value : StrategyTypeEnum.values()) {strategyHashMap.put(value.type, value.aClass);}}public AbstractStrategy executeStrategy(Integer flag){Class<? extends AbstractStrategy> aClass = strategyHashMap.get(flag);return applicationContext.getBean(aClass);}
}
相关文章:
策略模式+模版模式+工厂模式
工厂模式: (1)避免类中出现过多的组合依赖 (2)同时减少代码中出现过多的if...else if...语句 (2)将调用者跟我们的实现类解耦 模版模式: (1)功能复用 &…...
云计算平台层(PaaS)指的是什么?常见的应用场景盘点
云计算平台层(PaaS)指的是什么?云计算平台层(PaaS),全称PlatformasaService(平台即服务),是云计算服务的一种重要模式。为用户提供了一个基于云端的开发和部署环境,允许用户开发、运…...
搜索引擎简介
搜索引擎架构 整个搜索引擎分为三个系统 爬虫系统 索引系统 线上搜素服务 爬虫系统 爬虫分为两个阶段: 第一阶段:根据目标网站的列表页,爬对应的文档 URL 第二阶段:根据文档 URL,下载文档内容 触发器࿱…...
每天认识几个maven依赖(aislib+A1TRMI+Andromda+Annogen)
十七、aislib 1、是什么? aislib用于与人工智能(AI)相关的任务。这可能包括支持机器学习、数据分析或其他 AI 功能的工具。用于集成或扩展 AI 功能到 Java 项目中。 2、有什么用? 机器学习: 提供各种机器学习算法和…...
每日算法1(快慢指针)
通过一道题来了解快慢指针 这是一道力扣的算法题,首先来读题,是删除链表的中间元素,先来分析一下题,链表一共有三种可能,第一种是空链表,第二种链表的个数是偶数,第三种是链表的个数是奇数&…...
基于RealSense D435相机简单实现手部姿态重定向
基于Intel RealSense D435 相机和 MediaPipe的手部姿态检测,进一步简单实现手部姿态与机器人末端的重定向。 假设已经按照【基于 RealSenseD435i相机实现手部姿态检测】配置好所需的库和环境,并且有一个可以控制的机器人接口。 一、手部姿态重定向介绍 …...
Linux下搭建iSCSI共享存储-Tgt
Linux下搭建iSCSI共享存储-Tgt 在Linux上使用tgt搭建iSCSI共享存储,可以实现多个客户端同时访问共享存储。 1. 安装iSCSI Target软件包 使用下面命令安装: # centos sudo yum install scsi-target-utils sudo systemctl status tgtd# ubuntu sudo ap…...
js中正则表达式中【exec】用法深度解读
exec() 是 JavaScript 正则表达式对象(RegExp)中的一个方法,用于匹配字符串中的特定模式,并返回匹配结果。它比 test() 和 match() 更强大,因为它不仅仅返回匹配成功与否,还返回匹配的具体内容及其相关信息…...
Dockerfile的详解与案例
《Dockerfile 详解与案例》 一、Dockerfile 简介 Dockerfile 是一个用来构建 Docker 镜像的文本文件,它包含了一系列指令,用于描述如何创建一个 Docker 镜像。通过 Dockerfile,你可以定义镜像的基础环境、安装软件包、设置环境变量等操作&a…...
[spring]用MyBatis XML操作数据库 其他查询操作 数据库连接池 mysql企业开发规范
文章目录 一. MyBatis XML配置文件1. 配置链接字符串和MyBatis2. 写持久层代码方法定义Interface方法实现xml测试 3. 增删改查增:删改查 二. 开发规范(mysql)三. 其他查询操作1. 多表查询2. #{} 和 ${}(面试题)使用区别 排序功能like查询 三. 数据库连接池 一. MyBatis XML配置…...
[产品管理-33]:实验室技术与商业化产品的距离,实验室技术在商业化过程中要越过多少道“坎”?
目录 一、实验室技术 1.1 实验室研究性技术 1.2 技术发展的S曲线 技术发展S曲线的主要阶段和特点 技术发展S曲线的意义和应用 二、实验室技术商业化的路径 2.1 实验室技术与商业化产品的距离 1、技术成熟度与稳定性 - 技术自身 2、市场需求与适应性 - 技术是满足需求 …...
【有啥问啥】 Self-Play技术:强化学习中的自我进化之道
Self-Play技术:强化学习中的自我进化之道 在人工智能的快速发展中,强化学习(Reinforcement Learning, RL)已成为推动智能体自主学习与优化的关键力量。Self-Play技术,作为强化学习领域的一项前沿创新,通过…...
LCR 008. 长度最小的子数组
文章目录 1.题目2.思路3.代码 1.题目 LCR 008. 长度最小的子数组 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl1, ..., numsr-1, numsr] ,并返回其长度**。**如果不存在符合条件…...
uniApp 解决uniapp三方地图获取位置接口的请求次数限制问题,分别提供 Android 和 iOS 的实现方法(原生插件获取)
以下是使用 UniApp 编写获取位置信息的原生插件步骤,这里分别提供 Android 和 iOS 的实现方法。 一、Android 端实现 创建原生插件模块 在 UniApp 项目目录下创建一个目录,比如 nativeplugins/android/locationPlugin。使用 Android Studio 创建一个 An…...
Zabbix Agent 监控 MySQL 进程状态
1. 使用 Zabbix Agent 监控 MySQL 进程状态 这是最简单的方式,通过 Zabbix Agent 监控 MySQL 进程是否在运行。具体步骤如下: 步骤1: 确认 MySQL 进程的名称 在你的 CentOS 服务器上,运行以下命令来确认 MySQL 进程的名称: ps aux | grep mysql通常,MySQL 服务的进程名…...
【模型】感知器
感知器是最早的人工神经网络之一,也是现代深度学习的基础之一。 1. 感知器(Perceptron) 1.1 定义与功能 感知器是一种线性二分类模型,旨在模拟生物神经元的基本功能。它通过对输入特征进行加权求和,并应用激活函数来…...
HtmlCss 基础总结(基础好了才是最能打的)五
Html&Css 基础学习回顾总结 Html&Css 基础总结(基础好了才是最能打的)一 Html&Css 基础总结(基础好了才是最能打的)二 Html&Css 基础总结(基础好了才是最能打的)三 Html&Css 基础总结…...
图神经网络实战——分层自注意力网络
图神经网络实战——分层自注意力网络 0. 前言1. 分层自注意力网络1.1 模型架构1.2 节点级注意力1.3 语义级注意力1.4 预测模块 2. 构建分层自注意力网络相关链接 0. 前言 在异构图数据集上,异构图注意力网络的测试准确率为 78.39%,比之同构版本有了较大…...
基于深度学习的数字识别系统的设计与实现(python、yolov、PyQt5)
💗博主介绍💗:✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示:文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…...
ChatGPT 提取文档内容,高效制作PPT、论文
随着人工智能生成内容(AIGC)的快速发展,利用先进的技术工具如 ChatGPT 的 RAG(Retrieval-Augmented Generation,检索增强生成)模式,可以显著提升文档内容提取和内容创作的效率。以下将详细介绍如…...
家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...
站群服务器的应用场景都有哪些?
站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...
Linux系统部署KES
1、安装准备 1.版本说明V008R006C009B0014 V008:是version产品的大版本。 R006:是release产品特性版本。 C009:是通用版 B0014:是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存:1GB 以上 硬盘…...
从面试角度回答Android中ContentProvider启动原理
Android中ContentProvider原理的面试角度解析,分为已启动和未启动两种场景: 一、ContentProvider已启动的情况 1. 核心流程 触发条件:当其他组件(如Activity、Service)通过ContentR…...
