使用策略模式加工厂模式实现数据上传时的不同云平台的处理

在处理不同云存储的 SDK 和接口调用时可以使用策略模式加工厂模式实现了灵活的云存储上传处理

  1. 策略模式:可以为每个云存储(如阿里云、腾讯云等)创建一个策略类,实现统一的接口,来封装不同的上传逻辑。
  2. 工厂模式:创建一个工厂类,根据配置或用户输入来生成对应的云存储策略对象,从而实现灵活的选择和切换不同的云存储服务。
interface CloudStorageStrategy {void uploadData(String data);
}class AlibabaCloudStrategy implements CloudStorageStrategy {@Overridepublic void uploadData(String data) {// 阿里云的上传逻辑System.out.println("上传数据到阿里云: " + data);}
}class TencentCloudStrategy implements CloudStorageStrategy {@Overridepublic void uploadData(String data) {// 腾讯云的上传逻辑System.out.println("上传数据到腾讯云: " + data);}
}interface CloudStorageFactory {CloudStorageStrategy createStrategy(String cloudType);
}class CloudStorageFactoryImpl implements CloudStorageFactory {@Overridepublic CloudStorageStrategy createStrategy(String cloudType) {if ("Alibaba".equalsIgnoreCase(cloudType)) {return new AlibabaCloudStrategy();} else if ("Tencent".equalsIgnoreCase(cloudType)) {return new TencentCloudStrategy();}// 可以添加对其他云的处理或者抛出异常throw new IllegalArgumentException("不支持的云存储类型: " + cloudType);}
}public class CloudStorageUploader {private CloudStorageStrategy strategy;public CloudStorageUploader(CloudStorageFactory factory, String cloudType) {this.strategy = factory.createStrategy(cloudType);}public void upload(String data) {strategy.uploadData(data);}public static void main(String[] args) {CloudStorageFactory factory = new CloudStorageFactoryImpl();CloudStorageUploader uploaderToAlibaba = new CloudStorageUploader(factory, "Alibaba");uploaderToAlibaba.upload("测试数据");CloudStorageUploader uploaderToTencent = new CloudStorageUploader(factory, "Tencent");uploaderToTencent.upload("测试数据");}
}

代码运行:
在这里插入图片描述
在上述代码中,通过策略模式定义了不同云存储的上传策略,工厂模式根据输入的云类型创建相应的策略对象,实现了灵活的云存储上传处理

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

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

相关文章

【yarn】使用 Yarn 进行包管理:安装与配置指南

准我快乐地重饰演某段美丽故事主人 饰演你旧年共寻梦的恋人 再去做没流着情泪的伊人 假装再有从前演过的戏份 重饰演某段美丽故事主人 饰演你旧年共寻梦的恋人 你纵是未明白仍夜深一人 穿起你那无言毛衣当跟你接近 🎵 陈慧娴《傻女》 Yarn 是一…

【代码管理的必备工具:Git的基本概念与操作详解】

一、Git 初识 1.提出问题 不知道你工作或学习时,有没有遇到这样的情况:我们在编写各种⽂档时,为了防止⽂档丢失,更改失误,失误后能恢复到原来的版本,不得不复制出⼀个副本,比如: “…

Django之登录权限系统

本文参考链接django之auth模块(用户认证) - chchcharlie、 - 博客园 (cnblogs.com) 执行完迁移命令,会自动生成admin表,迁移命令如下: python manage.py makemigrations python manage.py migrate 相关模块 from django.contrib …

敏感词匹配DFA算法

算法简介与场景介绍 DFA算法,中文全称为确定性有穷自动机。它的基本思想是构建一个有穷自动机,当用户输入文本时,通过自动机的状态转换来快速匹配敏感词。具体特征是,有一个有效状态的集合和一些从一个状态通向另一个状态的边&am…

大模型面试(二)

这次又接到一个大模型岗位的面试。但是从面试过程来看,现在大模型岗位都要求有相关工作经验,还是太难进了。还是说国内公司早就过了培养人的年代了? 问到了哪些知识点: 开源大模型:项目里用的是浦语大模型&#xff0…

VuePress 的更多配置

现在,读者应该对 VuePress、主题和插件等有了基本的认识,除了插件,VuePress 自身也有很多有用的配置,这里简单说明下。 ‍ ‍ VuePress 的介绍 在介绍了 VuePress 的基本使用、主题和插件的概念之后,我们再来看看官…

简介空间复杂度

我们承接上一篇博客。我们写了时间复杂度之后,我们就要来介绍一下另一个相关复杂度了。空间复杂度。我觉得大家应该对空间复杂度认识可能比较少一些。我就是这样,我很少看见题目中有明确要求过空间复杂度的。但确实有这个是我们不可忽视的,所…

PXIe-7976【K410T】

起售价 RMB 152,880.00 块RAM(BRAM): 28620 kbit 动态RAM(DRAM): 2 GB FPGA: Kintex-7 410T PXI背板链路: PCI-Express Gen2 x 8 FPGA片: 63550 DSP片: 1540

文本关系抽取实战

数据与源码地址见文末 1.文本关系抽取要完成的任务 文本关系抽取是自然语言处理领域的一个重要任务,其主要目的是从非结构化的文本数据中自动识别和提取出实体之间的关系。这个过程可以分为以下几个关键步骤和目标: 实体识别:首先需要识别出文本中的关键实体,这些实体可以…

ChatGPT-4o大语言模型优化、本地私有化部署、从0-1搭建、智能体构建等高级进阶

目录 第一章 ChatGPT-4o使用进阶 第二章 大语言模型原理详解 第三章 大语言模型优化 第四章 开源大语言模型及本地部署 第五章 从0到1搭建第一个大语言模型 第六章 智能体(Agent)构建 第七章 大语言模型发展趋势 第八章 总结与答疑讨论 更多应用…

昇思25天学习打卡营第12天|FCN图像语义分割

文章目录 昇思MindSpore应用实践基于MindSpore的FCN图像语义分割1、FCN 图像分割简介2、构建 FCN 模型3、数据预处理4、模型训练自定义评价指标 Metrics 5、模型推理结果 Reference 昇思MindSpore应用实践 本系列文章主要用于记录昇思25天学习打卡营的学习心得。 基于MindSpo…

LaTeX教程(014)-LaTeX文档结构(14)

LaTeX教程(014)- LaTeX \LaTeX LATE​X文档结构(14) 2.3.3 multitoc - 将目录设置为多栏 multitoc包的使用方法相当简单,只需要调用这个包,并将要设置为多栏(默认是双栏)的目录指定到包选项中即可。如\usepackage[toc]{multitoc},设置的就是…

[python技巧]OmegaConf调用配置文件

在https://blog.csdn.net/qq_43235540/article/details/140250813?spm1001.2014.3001.5502中介绍了parser的使用方法,一般传入参数和是配置文件一起使用,配置. OmegaConf.load() 从.yaml文件读取配置 opt, unknown parser.parse_known_args() configs [OmegaConf.load(cf…

Springboot使用WebSocket发送消息

1. 创建springboot项目&#xff0c;引入spring-boot-starter-websocket依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency>完整项目依赖 <?xml ver…

Vue 使用 @click 绑定点击事件

https://andi.cn/page/621505.html

Python【打包exe文件两步到位】

Python打包Exe 安装 pyinstaller&#xff08;pip install pyinstaller&#xff09; 执行打包命令&#xff08;pyinstaller demo.py&#xff09; 打完包会生成 dist 文件夹&#xff0c;如下如

基于开源AI数据框架LlamaIndex构建上下文增强型LLA应用

引言 “将你的企业数据转化为可用于实际生产环境的LLM应用程序&#xff0c;”LlamaIndex主页用60号字体这样高亮显示。其副标题是“LlamaIndex是构建LLM应用程序的领先数据框架。”我不太确定它是否是业内领先的数据框架&#xff0c;但我认为它是一个与LangChain和Semantic Ker…

快行线冷链——创新仓配、共赢未来 主题沙龙在京成功举办

2024年7月7日下午&#xff0c;由京营建联盟、北京市大兴区餐饮行业协会、北京快行线冷链物流联合主办的“创新仓配&#xff0c;共赢未来——相信拥抱的力量”主题沙龙活动在北京篝野城市露营空间隆重举行。本次活动定向邀请了餐饮老板、餐饮企业供应链负责人及冻品经销商和相关…

电子电气架构 --- 智能座舱万物互联

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…

SpringSecurity在SpringBoot中的自动装配

从SpringBoot的自动装配原理入手 找到META-INFO下的spring.factories文件 SpringSecurity作为Spring的亲儿子&#xff0c;自然在spring-boot-autoconfigure下的spring.factories文件中配置了 org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfigurat…