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

专业网站建设套餐北京网站建设116net

专业网站建设套餐,北京网站建设116net,瀑布流网站有哪些,成都最新新闻事件今天需求背景 1、在管控流程中#xff0c;涉及到的业务操作很多#xff0c;不同的业务具有不同的策略实现 举个具体的例子#xff1a; 在比价管控流程中#xff0c;有比价策略和管控策略#xff0c;每个业务的比价和管控均不一样。因此使用策略模式来开发 整体架构流程 1、…需求背景 1、在管控流程中涉及到的业务操作很多不同的业务具有不同的策略实现 举个具体的例子 在比价管控流程中有比价策略和管控策略每个业务的比价和管控均不一样。因此使用策略模式来开发 整体架构流程 1、定义业务策略枚举 比价 和 管控 /*** description:* author: hongbin.zheng* create: 2023-07-17 16:33**/ public enum StrategyType {priceCompare,priceControl; }2、定义业务策略注解标注出 策略的类 /*** description:* author: hongbin.zheng* create: 2023-07-17 16:34**/ Retention(value RetentionPolicy.RUNTIME) Target(value ElementType.TYPE) Component Inherited public interface StrategyAnnotation {/*** 策略类型*/StrategyType[] strategyType();/*** 具体的策略建*/String[] dataType() default {}; } 3、定义策略基本方法 /*** description:* author: hongbin.zheng* create: 2023-07-17 16:46**/ public interface PriceCompareStrategy {/*** 执行价格比价*/public String doPriceCompare(); }/*** description:* author: hongbin.zheng* create: 2023-07-17 16:52**/ public interface PriceControlStrategy {/*** 执行管控* return*/public String doPriceControl(); }4、写每个具体实现的策略类 /*** description:* author: hongbin.zheng* create: 2023-07-17 16:44**/ Service StrategyAnnotation(strategyType StrategyType.priceCompare, dataType firstPriceCompare) public class FirstPriceCompareStrategy implements PriceCompareStrategy {Overridepublic String doPriceCompare() {System.out.println(-------first price compare start---------);System.out.println(-------do do do ---------);System.out.println(-------first price compare end---------);return first price compare end;} }/*** description:* author: hongbin.zheng* create: 2023-07-17 16:50**/ Service StrategyAnnotation(strategyType StrategyType.priceCompare, dataType secondPriceCompare) public class SecondPriceCompareStrategy implements PriceCompareStrategy {Overridepublic String doPriceCompare() {System.out.println(-------second price compare start---------);System.out.println(-------do do do ---------);System.out.println(-------second price compare end---------);return second price compare end;} } /*** description:* author: hongbin.zheng* create: 2023-07-17 16:53**/ Service StrategyAnnotation(strategyType StrategyType.priceControl, dataType firstPriceControl) public class FirstPriceControlStrategy implements PriceControlStrategy {Overridepublic String doPriceControl() {System.out.println(---------do first price control start ---------------);System.out.println(---------do first price control end ---------------);return do first price control end;} }/*** description:* author: hongbin.zheng* create: 2023-07-17 16:53**/ Service StrategyAnnotation(strategyType StrategyType.priceControl, dataType secondPriceControl) public class SecondPriceControlStrategy implements PriceControlStrategy {Overridepublic String doPriceControl() {System.out.println(---------do second price control start ---------------);System.out.println(---------do second price control end ---------------);return do second price control start;} }Service StrategyAnnotation(strategyType {StrategyType.priceCompare, StrategyType.priceControl}, dataType commonStrategy) public class PriceCompareAndControlStrategy implements PriceCompareStrategy, PriceControlStrategy {Overridepublic String doPriceCompare() {System.out.println(-------common price compare start---------------);System.out.println(-------common price compare end---------------);return common price compare end;}Overridepublic String doPriceControl() {System.out.println(-------common price control start---------------);System.out.println(-------common price control end---------------);return common price control end;} }5、编写策略管理类管理所有的策略并且对外暴露出 拿到具体策略类的方法 package com.dgut.strategy.springboot_strategy;import com.google.common.collect.Maps; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.stereotype.Service;import javax.annotation.PostConstruct; import java.util.Map;/*** description:* author: hongbin.zheng* create: 2023-07-17 16:59**/ Service public class StrategyServiceManager {Autowiredprivate ApplicationContext context;/*** 存储策略:类型具体实现类*/private MapStrategyType, MapString, Object map;public E E getStrategyInstance(StrategyType strategyType, String type, ClassE eClass) {MapString, Object strategyTypeMap map.get(strategyType);if (strategyTypeMap ! null !map.isEmpty()) {Object bean strategyTypeMap.get(type);if (bean ! null) {return eClass.cast(bean);}}return null;}PostConstructprivate void init() {map Maps.newHashMap();MapString, Object beans context.getBeansWithAnnotation(StrategyAnnotation.class);for (Object value : beans.values()) {StrategyAnnotation annotation value.getClass().getAnnotation(StrategyAnnotation.class);StrategyType[] strategyTypes annotation.strategyType();String[] dataTypes annotation.dataType();if (strategyTypes null || strategyTypes.length 0 || dataTypes null || dataTypes.length 0) {throw new RuntimeException(注解上必填字段不能为空);}for (StrategyType strategyType : strategyTypes) {for (String dataType : dataTypes) {map.computeIfAbsent(strategyType, k - Maps.newHashMap()).put(dataType, value);}}}}} 6、代码流程测试 package com.dgut.strategy.springboot_strategy;import com.dgut.strategy.springboot_strategy.compare.PriceCompareStrategy; import com.dgut.strategy.springboot_strategy.control.PriceControlStrategy; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest;/*** description:* author: hongbin.zheng* create: 2023-07-18 16:17**/ SpringBootTest public class StrategyTest {Autowiredprivate StrategyServiceManager strategyServiceManager;Testpublic void test2() {String strategyName priceControl;String dataType firstPriceControl;System.out.println(priceControlTest(strategyName, dataType));String dataType2 secondPriceControl;System.out.println(priceControlTest(strategyName, dataType2));String dataType3 commonStrategy;System.out.println(priceControlTest(strategyName, dataType3));}public String priceControlTest(String strategyName, String dataType) {StrategyType strategyType StrategyType.valueOf(strategyName);if (strategyType null) {return 管控策略不存在;}PriceControlStrategy strategyInstance strategyServiceManager.getStrategyInstance(strategyType, dataType, PriceControlStrategy.class);if (strategyInstance null) {return 找不到管控策略;}return strategyInstance.doPriceControl();}Testpublic void test() {String strategyName priceCompare;String dataType firstPriceCompare;System.out.println(priceCompareTest(strategyName, dataType));String dataType2 secondPriceCompare;System.out.println(priceCompareTest(strategyName, dataType2));String dataType3 commonStrategy;System.out.println(priceCompareTest(strategyName, dataType3));}public String priceCompareTest(String strategyName, String dataType) {StrategyType strategyType StrategyType.valueOf(strategyName);if (strategyType null) {return 策略不存在;}PriceCompareStrategy strategyInstance strategyServiceManager.getStrategyInstance(strategyType, dataType, PriceCompareStrategy.class);if (strategyInstance null) {return 找不到比价策略;}return strategyInstance.doPriceCompare();} } 技术细节 通过spring的context对象解析获取类注解拿到bean常规操作这个要学起来很多地方可以这样子操作呢。 总结 知道的越多不知道的越多希望对你有帮助 \color{red}知道的越多不知道的越多希望对你有帮助 知道的越多不知道的越多希望对你有帮助
http://www.w-s-a.com/news/500565/

相关文章:

  • 网站开发销售怎么做django做网站
  • 淘宝客网站做百度竞价万网域名怎么绑定网站
  • 建设网站找哪个公司北京知名大公司有哪些
  • 专业彩票网站开发网站流量在哪设置
  • 网站建设对应的岗位榆林做网站公司
  • 网站建设公司怎么算专业js网站分页怎么做
  • 网和网站的区别phpcms和帝国cms哪个好
  • wordpress改网站名字长沙网络营销外包
  • 宝塔怎么做第二个网站网站内容设计遵循的原则有
  • 网站违反了 google 质量指南免费ppt模版网站
  • 郑州网站建设郑州网站建设成都那家网站建设好
  • 温州网站排名优化公司如何招聘软件网站开发人员
  • 成都 网站建设公司哪家好襄阳行业网站建设
  • wordpress 调用时间做网站seo的公司哪家好
  • 手机上网站搭建网站账户系统
  • 西乡网站的建设柳州建站
  • 宁夏网站建设怎么样互联网 网站设计
  • 成都关键词seo推广平台手机端关键词排名优化软件
  • 学做软件的网站卡盟平台
  • 网站构建建设案例展示关于做服饰网站的首页
  • 如何建设网站论坛凡科建站手机版登录
  • 建设银行门户网站惠州公司网站建设价格
  • 用python开发网站网站如何取消验证码
  • 公司做企业网站互联网建网站
  • 建网站需要的费用公司注册后怎么做网站
  • 宣传电脑的网站开发运动网站建设教程
  • 网站建设公司都会有哪些花销做网站公司商丘
  • 网站风格有哪些软件定制和开发
  • 公司网络维护具体做什么河南网站推广优化公司哪家好
  • 中学生制作的网站常平哪里有招计算机网站开发的