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

层次结构分明的网站配色方案网站建设用户需求

层次结构分明的网站配色方案,网站建设用户需求,中国正规的加盟网站,asp.net 4.0网站开...一、策略模式 背景 针对某种业务可能存在多种实现方式#xff1b;传统方式是通过传统if…else…或者switch代码判断#xff1b; 弊端#xff1a; 代码可读性差扩展性差难以维护 策略模式简介 策略模式是一种行为型模式#xff0c;它将对象和行为分开#xff0c;将行…一、策略模式 背景 针对某种业务可能存在多种实现方式传统方式是通过传统if…else…或者switch代码判断 弊端 代码可读性差扩展性差难以维护 策略模式简介 策略模式是一种行为型模式它将对象和行为分开将行为定义为一个行为接口和具体行为的实现。 组成 抽象策略类(Strategy)策略的抽象具体策略类(ConcreteStrategy)具体的策略实现一种具体实现环境类(Context)用来操作策略的上下文环境 二、代码实现 以文件存储方式为例 抽象策略类 package com.qiangesoft.file.core;import org.springframework.web.multipart.MultipartFile;/*** 文件存储策略接口** author qiangesoft* date 2024-01-06*/ public interface FileStoreStrategy {/*** 存储方式** return*/String getType();/*** 上传文件** param file* return* throws Exception*/void uploadFile(MultipartFile file) throws Exception; } 具体策略实现 本地存储 package com.qiangesoft.file.core.local;import com.qiangesoft.file.core.FileStoreStrategy; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.springframework.web.multipart.MultipartFile;/*** 文件本地存储** author qiangesoft* date 2024-01-06*/ Component Slf4j public class LocalStoreStrategyImpl implements FileStoreStrategy {Overridepublic String getType() {return LOCAL;}Overridepublic void uploadFile(MultipartFile file) throws Exception {log.info(upload file by local);} } minio存储 package com.qiangesoft.file.core.minio;import com.qiangesoft.file.core.FileStoreStrategy; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.springframework.web.multipart.MultipartFile;/*** 文件minio对象存储** author qiangesoft* date 2024-01-06*/ Component Slf4j public class MinioStoreStrategyImpl implements FileStoreStrategy {Overridepublic String getType() {return MINIO;}Overridepublic void uploadFile(MultipartFile file) throws Exception {log.info(upload file by minio);} } 策略上下文环境 package com.qiangesoft.file.core;import org.springframework.stereotype.Component;import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap;/*** 文件存储策略上下文** author qiangesoft* date 2024-01-06*/ Component public class FileStoreStrategyContext {/*** 策略实现类上下文*/private final MapString, FileStoreStrategy strategyMap new ConcurrentHashMap();/*** 利用Spring的发现机制将实现了FileStoreStrategy的类都放到strategyMap里面*/public FileStoreStrategyContext(ListFileStoreStrategy fileStoreStrategyList) {for (FileStoreStrategy strategy : fileStoreStrategyList) {String type strategy.getType();if (this.strategyMap.containsKey(type)) {throw new RuntimeException(String.format(Strategy [%s] is repeat!, type));}this.strategyMap.put(type, strategy);}}/*** 获取具体的策略实现类** param storeType* return*/public FileStoreStrategy getStrategy(String storeType) {FileStoreStrategy strategy strategyMap.get(storeType);if (strategy null) {throw new RuntimeException(String.format(Strategy [%s] is not found!, storeType));}return strategy;} }调用 package com.qiangesoft.file.demo;import com.qiangesoft.file.core.FileStoreStrategy; import com.qiangesoft.file.core.FileStoreStrategyContext; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;/*** Demo** author qiangesoft* date 2024-01-08*/ RestController RequestMapping(/demo) public class DemoController {Autowiredprivate FileStoreStrategyContext fileStoreStrategyContext;GetMapping(/upload)public String upload(String type) throws Exception {FileStoreStrategy fileStoreStrategy fileStoreStrategyContext.getStrategy(type);fileStoreStrategy.uploadFile(null);return fileStoreStrategy.getType();}} 扩展 如果新增一种存储方式只需增加一个策略实现类实现FileStoreStrategy接口重写getType方法然后再实现具体的业务逻辑 案例代码 点击下载
http://www.dnsts.com.cn/news/117594.html

相关文章:

  • jsp环保主题网站代做南桥做网站
  • 深圳市建设行业主管部门官方网站如何查网站死链
  • 深圳全网营销网站建设睢宁县建设工程招标网
  • 有没有专业做淘宝网站论坛型网站怎么做的
  • 个人博客建站wordpress易语言如何做验证系统官方网站
  • 温州捷创网站建设中国建筑网官网查询报考
  • 如何建造企业网站wordpress手机版刷新
  • 邯郸网站建设行情wordpress文章收费阅读
  • 网站建设论文答辩自述珠海网络公司排名
  • 衣服商业网站建设策划书做水晶接单在哪个网站接
  • 用手机如何做网站git 网站开发应用
  • 有了自己的网站怎样做后台dede小说网站模板
  • 中国建筑人才网是什么网站wordpress付款后可见
  • 烟台网站优化网络销售怎么样
  • 网站建设主管珠海网络营销外包收费情况
  • 杭州如何设计网站首页怎么看网站是动态还是静态
  • 东莞网站建设 南城石佳南宁建站官网
  • 建设信源网站导购网站一站式建站
  • 网站开发维护招聘本地建站软件
  • 百度怎么做网站排名批量爆破wordpress后台密码
  • 建立网站需要投入的成本网站开发的编程语言
  • 2个网站 同意内容 百度优化六安头条网
  • 网站基本模块网站按钮psd
  • 院感质控中心网站建设 申请成都全网营销型网站
  • 淮北网站开发网站怎样设计网页
  • 怎么做无损mp3下载网站做常识的网站
  • 淘宝建设网站的小型的游戏网站怎么做
  • 源码购买网站代理网址网站
  • 广州市天河区建设和水务局网站深圳全网推广效果如何
  • 宁波北仑网站建设学做衣服上什么网站好