使用枚举来实现策略模式

  1. 使用很多if else的场景

    1. 	public void save(String type,Object data){if("db".equals(type)){saveInDb(data);}else if("file".equals(type)){saveInFile(data);}else if("oss".equals(type)){saveInOss(data);}}
      
  2. 使用枚举来解决

    1. public enum SaveStrategyEnum{DB("db"){@Overridepublic void save(Object obj){System.out.println("save in db:"+obj);}},FILE("file"){@Overridepublic void save(Object obj){System.out.println("save in file:"+ obj);}},OSS("oss"){@Overridepublic void save(Object obj){System.out.println("save in oss:" +obj);}};private String type;SaveStrategyEnum(String type){this.type = type;}public abstract void save(Object obj);public static SaveStrategyEnum typeOf(String type){for(SaveStrategyEnum strategyEnum : values()){if(strategyEnum.type.equalsIgnoreCase(type)){return strategyEnum;}}return null;}
      }public void save(String type,Object data){SaveStrategyEnum strategyEnum = SaveStrategyEnum.typeOf(type);if(strategyEnum != null){strategyEnum.save(data);}
      }
      

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

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

相关文章

CSS网页布局(重塑网页布局)

一、实现两列布局 许多网站有一些特点,如页面顶部放置一个大的导航或广告条,右侧是链接或图片,左侧放置主要内容,页面底部放置版权信息等 一般情况,此类网页布局的两列都有固定的宽度,而且从内容上很容易区…

学习java第九天 简单小项目

今天简单写了小项目 import java.math.*; import java.util.*; public class Project_array{// data 拿到外面 封装的方法 共享同一个变量// static 静态上下文只能直接访问静态的变量// 一旦加上static 代表当前的变量全局共享一份static Record[] data {new Record("…

C/C++面试八股

引用: C面经(简洁版)-CSDN博客 正文: 1. const 和 volatile 的区别? 2. const 和 volatile 可以共用么?

零基础Java第八期:一维数组(1)

目录 一、 一维数组的基本概念 1.1. 什么是数组 1.2. 数组的创建及初始化 1.3. 数组的使用 二、数组是引用类型 2.1. 初始JVM的内存分布 2.2. 基本类型变量与引用类型变量 2.3. 引用变量的理解 2.4. null 三、数组的应用场景 3.1. 作为函数的参数 3.2. 作为函数的返…

你可能需要的多文档页面交互方案

前言 欢迎关注同名公众号《熊的猫》,文章会同步更新! 在日常工作中,面对不同的需求场景,你可能会遇到需要进行多文档页面间交互的实现,例如在 A 页面跳转到 B 页面进行某些操作后,A 页面需要针对该操作做出…

YoloV10改进策略:主干网络改进|DeBiFormer,可变形双级路由注意力|全网首发

摘要 在目标检测领域,YoloV10以其高效和准确的性能而闻名。然而,为了进一步提升其检测能力,我们引入了DeBiFormer作为YoloV10的主干网络。这个主干网络的计算量比较大,不过,上篇双级路由注意力的论文受到很大的关注,所以我也将这篇论文中的主干网络用来改进YoloV10,卡多…

成本决定未来——AIGC 下半场,高成本阻碍发展,我们该怎么办?

你好,我是三桥君 你最近有没有觉得工作中用到的那些 AI 工具好像越来越便宜了呢?这可不是偶然哦。 今天,三桥君就来聊聊为啥 AIGC 的下半场成本这么重要? 你想想看,咱平时工作已经够累了,要是再加上用那些贵…

商​汤​二​面

1. 请尽可能详细地说明,根据React Router的思想,如何使用History API实现History Router的PWA?请详细说明如何监听url的改变。 React Router 是一个用于在 React 应用中实现导航和路由的库。它允许你根据 URL 的变化来渲染不同的组件。结合 …

python编译问题 当你编译第一个python程序时可能出现如下错误

python编译问题 当你编译第一个python程序时可能出现如下错误 若出现如下错误: E:\p\venv\Scripts\python.exe E:/p/venv/d.py File “E:/p/venv/d.py”, line 5SyntaxError: Non-ASCII character ‘\xe7’ in file E:/p/venv/d.py on line 5, but no encoding d…

代码随想录算法训练营第十一天|383. 赎金信, 15. 三数之和

文档讲解:代码随想录 难度:easy 383. 赎金信 力扣题目链接(opens new window) 给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串,判断第一个字符串 ransom 能不能由第二个字符串 magazines 里面的字符构成。如果可以构成&#xf…

算法Day-2

27. 移除元素 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。 假设 nums 中不等于 val 的元素数量为 k,要通过此题,您需要执行以下操作&am…

Adobe Illustrator如何在图片快速插入latex公式

Adobe Illustrator没法直接输入latex公式,也没有公式的字体 解决: 1.装插件:latex2ai(我装不上) 2.latex公式编辑网站(图片识别公式多了要收费)或者其他latex公式网站,公式打完保…

zotero下载、安装、翻译和显示无法安装插件“%S”的解决办法

文章目录 zotero下载和安装和翻译还有插件英文翻译软件遇到的问题 zotero下载和安装和翻译还有插件 Zotero从入门到精通第一期–如何省心省力翻译科研文献,这里面主要是使用小牛翻译的过程,输入产品密匙需要加入个人的账号密码进行sign in 英文翻译软件…

23种设计模式具体实现方法

提示:文章 文章目录 前言一、背景二、设计模式1、代理模式2、适配器模式2.1 总结 三、3.1 总结 前言 前期疑问: 本文目标: 一、背景 最近 二、设计模式 1、代理模式 参考的这篇文章,代理模式(Proxy) 同时这篇文章还引用了另…

动态规划17:123. 买卖股票的最佳时机 III

动态规划解题步骤: 1.确定状态表示:dp[i]是什么 2.确定状态转移方程:dp[i]等于什么 3.初始化:确保状态转移方程不越界 4.确定填表顺序:根据状态转移方程即可确定填表顺序 5.确定返回值 题目链接:123.…

递归神经网络(RNN)简介

递归神经网络简介 在本文中,我们将介绍神经网络的一种新的变体,即递归神经网络,也称为 (RNN),当数据是连续的时,如时间序列数据和文本数据,它比简单的神经网络效果更好。 什么是递归神经网络 (RNN)? 循环神经网络 (RNN) 是一种神经网络,其中上一步的输出作为当前…

Quarto ppt模板制作与Rstudio git连接

本篇记录下当前ppt演示中比较流行的quarto document使用情况以及Rstudio与git相连接的一些实操。 1 Quarto ppt模板制作 1.1 Quarto简介(来自Kimi) Quarto 是一个由 RStudio 的母公司 Posit 团队开发的开源科学和技术出版系统,它建立在 Pan…

计算机网络——传输层服务

传输层会给段加上目标ip和目标端口号 应用层去识别报文的开始和结束

.NET 6新特性 | System.Text.Json功能改进

在.NET 6.0中,JSON处理库得到了显著的改进,主要体现在System.Text.Json上。以下是对.NET 6.0中改进的JSON处理库的详细分析: 一、System.Text.Json的引入与优势 在.NET 6中,Microsoft引入了新的JSON库System.Text.Json作为官方推…

安全基线加固

安全基线加固 定义:为了实现基本防护需求而制定的一系列基准; Windows && Linux 安全基线加固 操作系统具体操作 Windows 账户认证 基本要求对应操作对登录操作系统的用户进行身份标识和鉴别 操作内容:检测开机登录时是否需要密码…