当前位置: 首页 > news >正文

浦东企业网站建设住房和城乡建设部监理工程师网站

浦东企业网站建设,住房和城乡建设部监理工程师网站,35岁了还能学平面设计吗,wordpress数据备份插件1 定义与优点 1.1 定义 策略模式#xff08;Strategy Pattern#xff09;属于对象的⾏为模式。他主要是用于针对同一个抽象行为#xff0c;在程序运行时根据客户端不同的参数或者上下文#xff0c;动态的选择不同的具体实现方式#xff0c;即类的行为可以在运行时更改。…1 定义与优点 1.1 定义 策略模式Strategy Pattern属于对象的⾏为模式。他主要是用于针对同一个抽象行为在程序运行时根据客户端不同的参数或者上下文动态的选择不同的具体实现方式即类的行为可以在运行时更改。 策略模式定义了一系列算法或实现策略并将每个算法封装在独立的类中所以对一个策略行为进行修改、添加或者删除策略时不会影响到原有的策略也就是开闭原则的具体表现。 1.2 优势 方便扩展使用策略模式可以方便的添加、删除、替换策略只需要增加策略类即可不需要修改原有代码。可读性好不通的策略实现分布在不通的实现类中互不依赖结构清晰易于理解。避免大量的条件判断使用传统的if-else在分支过多时难以维护并且不符合开闭原则增加策略类型时需要增加if-else代码使用策略模式即可避免这一点。 2 场景与目标 假如你的项目对于文件上传这个业务支持多种具体实现不仅支持AWS S3、腾讯云 COS、阿里云 OSS后续还可能接入华为云、Oracle云等云厂商的对象存储。每个待上传的文件都有一个需要上传到哪个对象存储类型的属性那么对于文件上传有以下的处理步骤 根据待上传文件信息选择选择不通的对象存储的上传客户端一些公共的逻辑比如参数校验日志记录 3 实现 可以使用策略模式模版方法工厂模式并在Spring中进行应用实现。 定义一个文件上传的策略接口定义一个抽象类实现这个接口并实现不同对象存储的通用逻辑定义子类的模版方法具体不同的对象存储客户端实现抽象类并实现抽象方法并且定义为一个bean定义一个工厂管理具体的实现类对象客户端使用工厂类来获取不同对象存储的具体实现类 具体实现如下 定义文件上传的策略接口 public interface CloudStorage {/*** 上传文件** param uploadPath 上传文件到哪个目录下* param localFile 待上传的文件*/void upload(String uploadPath, File localFile);}定义一个公共的抽象类所有对象存储都会用到的通用处理逻辑放在这里然后定义一个doUpload()方法让子类来实现也即模版方法的具体体现 Slf4j public abstract class AbstractCloudStorage implements CloudStorage {/*** 上传文件** param uploadPath 上传文件到哪个目录下* param localFile 待上传的文件*/Overridepublic void upload(String uploadPath, File localFile) {if (StringUtils.isBlank(uploadPath) || Objects.isNull(localFile) || !localFile.exists()) {log.warn(参数异常, uploadPath{}, localFile{}, uploadPath, localFile.getPath());return;}long start System.currentTimeMillis();doUpload(uploadPath, localFile);log.info(上传完成耗时{}ms, (System.currentTimeMillis() - start));}/*** 上传文件** param uploadPath 上传文件到哪个目录下* param localFile 待上传的文件*/public abstract void doUpload(String uploadPath, File localFile); }定义不同策略的实现类增加一种策略只需要增加一个类即可以达到开放封闭的目的 Slf4j Component public class CosClient extends AbstractCloudStorage {/*** 上传文件** param uploadPath 上传文件到哪个目录下* param localFile 待上传的文件*/Overridepublic void doUpload(String uploadPath, File localFile) {log.info(Tencent COS 上传文件);} }Slf4j Component public class S3Client extends AbstractCloudStorage {/*** 上传文件** param uploadPath 上传文件到哪个目录下* param localFile 待上传的文件*/Overridepublic void doUpload(String uploadPath, File localFile) {log.info(AWS S3 上传文件);} }最后定义一个工厂类来获取不同类型的对象存储策略的文件上传实例 Slf4j Component public class CloudStorageClientFactory {Autowiredprivate MapString, CloudStorage cloudStorageMap;/*** 通过对象存储类型获取实际客户端** param storageType 对象存储类型* return 对象存储客户端*/public CloudStorage getByType(String storageType) {return cloudStorageMap.get(storageType);} }4 客户端调用 通过上面的对策略模式的定义和实现接下来创建一个上传文件的服务来处理文件上传请求 Slf4j Component public class FileUploadService {Autowiredprivate CloudStorageClientFactory cloudStorageClientFactory;/*** 文件上传*/public void fileUpload(FileInfo fileInfo) {// 通过文件需要上传的存储类型获取对应的客户端CloudStorage cloudStorage cloudStorageClientFactory.getByType(fileInfo.getStorageType());// 执行客户端的文件上传cloudStorage.upload(fileInfo.getUploadPath(), fileInfo.getFile());} }通过以上的实现使用了工厂模式来创建不同类型的对象存储客户端实例使用策略模式来处理文件上传请求来避免了if-else条件判断代码简洁易于维护和扩展。 使用模版方法处理了上传文件的公共逻辑实现了代码优雅复用。这样的实现方式在项目中的实际使用非常频繁。
http://www.pierceye.com/news/746222/

相关文章:

  • 北京建机官网查询台州seo全网营销
  • 网站建设书店用户分几类网站建设项目采购公告
  • 如何做企业网站宣传wordpress站内搜索次数
  • 加盟招商推广网站如何做品牌运营与推广
  • 网站做分布式部署湖南平台网站建设设计
  • 沈阳市建设工程项目管理中心网站网络项目网
  • 沈阳网站建设成创输入网址跳到别的网站
  • 课程网站开发建设商务网站的费用
  • 资讯网站优化排名wordpress 删除所有文章
  • 旅游海外推广网站建设方案wordpress外观无法编辑
  • 品牌手表网站网站推广律师关键词有哪些
  • 卖视频会员个人网站怎么做推广网站的图片怎么做
  • 服务器关闭 网站被k微信公众号推广的好处
  • 工业设计招聘信息网站做网站首页轮播图代码
  • 央企网站开发手机网站 input
  • 千里马招标网站东莞网站推广行者seo08
  • 网络工程专业主要学什么百度seo课程
  • 网站定制开发收费标准是多少网站导航功能
  • 东莞网站(建设信科网络)公众号小程序开发公司
  • dw网站结构图怎么做4399电脑版网页链接
  • 网站服务器网址招聘seo专员
  • 个人网站模板psd主机服务器网站 怎么做
  • 网站开发公司的义务深圳 电子商务网站开发
  • 北京外贸网站设计备案宁波网站推广专业的建站优化公司
  • 政协系统网站建设织梦手机网站
  • 网站建设上海网站制作如何修改上线网站
  • 漫画网站建设教程网站描述怎么设置
  • 网站左侧树形导航怎么做农村网站做移动
  • 建立企业网站方案php做简单网站教程
  • 一个网站交互怎么做的银行营销活动方案