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

网站建设中企动力最佳a5服务器网站环境

网站建设中企动力最佳a5,服务器网站环境,湖南建筑信息网查询,信阳seo推广相信我们对策略模式都有耳闻#xff0c;但是可能不知道它在项目中具体能有什么作用#xff0c;我们需要在什么场景下才能去尽可能得去使用策略模式。 这里我简单的列出一个我之前在公司做的一个需求#xff1a;跟第三方oa系统对接接口#xff0c;对方需要回调我们当前系统…相信我们对策略模式都有耳闻但是可能不知道它在项目中具体能有什么作用我们需要在什么场景下才能去尽可能得去使用策略模式。 这里我简单的列出一个我之前在公司做的一个需求跟第三方oa系统对接接口对方需要回调我们当前系统但是是不同的业务接口回调我们系统可以根据一个字段来区分需要走哪个业务分支可能初级程序员刚接触这个需求的时候想法是多个接口回调那就写多个接口罢了强调接口隔离或者直接一个接口也行if...else if 也很不错这里呢为了彰显我们开发人员的逼格我们可以基于一个接口外加设计模式之策略模式简单工厂模式。 下面是一个简单的实现demo 首先是我们定义一个接口即起路由作用我们具体的不同业务实现类来实现这个接口就可以 public interface CalculationStrategy {/*** 策略接口*/int operate(int num1, int num2); } Component(add) class AddCalculationStrategyImpl implements CalculationStrategy {Overridepublic int operate(int num1, int num2) {return num1 num2;} } Component(Division) class DivisionStrategyImpl implements CalculationStrategy {Overridepublic int operate(int num1, int num2) {return num1 / num2;} } Component(multiple) class MultiplicationStrategyImpl implements CalculationStrategy {Overridepublic int operate(int num1, int num2) {return num1 * num2;} } Component(subtract) class SubtractionStrategyImpl implements CalculationStrategy {Overridepublic int operate(int num1, int num2) {return num1 - num2;} }/*** 如果Component注解中不写标识会默认加载驼峰类名testStrategyImpl*/ Component class TestStrategyImpl implements CalculationStrategy {Overridepublic int operate(int num1, int num2) {return num1 - num2;} } 不同的业务分支我就使用加减乘除来代替也能起到同样的效果。 第二步便是我们的策略上下文我将其理解为策略工厂这也是最核心的一个类这里我们项目启动的时候第一步是初始化所有加了component等类我们的策略工厂的构造函数中有获取所有实现了路由规则的实现类名称第二步便是将获取到的实现类名称放入到我们初始化的一个空的map中 Component public class CalculationFactory{/*** 把策略角色类型key,和参数value放到Map中* key就是beanName(具体策略实现类中Component的名字)value就是接口具体的实现类* Maps是guava下的封装类型实则是静态的创建了一个HashMap的对象Maps可以根据key去获取value对象*/public final MapString, CalculationStrategy calculationStrategyMap Maps.newHashMapWithExpectedSize(4);/*** 利用构造函数在项目启动的时候将策略实现类注册到 map里* param strategyMap*/public CalculationFactory(MapString, CalculationStrategy strategyMap) {this.calculationStrategyMap.clear();this.calculationStrategyMap.putAll(strategyMap);}//可以使用Getter注解代替这样写方便读者理解在Service层调用Context执行策略public MapString, CalculationStrategy getCalculationStrategyMap() {return calculationStrategyMap;} }第三步便是我们的路由接口实现这一步便是具体路由的规则判断了 这里有一步我们需要对代码进行健壮性判断以防map.get()结果为空导致系统报错这里大家可以根据业务情况自行去处理。 Service public class CalculationService {Autowiredprivate CalculationFactory calculationFactory;public int operateByStrategy(String strategy, int num1, int num2) {// 获取入参根据不同的参数类型去执行不同的策略Context的get方法是在这个地方用到的operate方法就是一开始定义的策略接口//calculationFactory.getCalculationStrategyMap().get(strategy)这里可能会出现空所以要做一个容错处理return calculationFactory.getCalculationStrategyMap().get(strategy).operate(num1, num2);} } 最后便是我们的测试接口了 RestController RequestMapping(/strategy) public class TestStrategyController {Autowiredprivate CalculationService calculationService;GetMapping(/test/{operation}/{num1}/{num2})public int testCalculation(PathVariable String operation,PathVariable int num1, PathVariable int num2) {// 省略参数判空return calculationService.operateByStrategy(operation, num1, num2);} } 这样写的好处就是如果系统还需要扩展其他业务类型的分支处理那我们只需要将业务处理的实现类实现我们的路由接口将这个实现类注册进去即可其他地方都不用改只需关注我们这个自身的业务分支的逻辑处理。方便了我们系统的后续扩展。 如果你觉得文章还不错请大家 点赞、分享、留言 下因为这将是我持续输出更多优质文章的最强动力
http://www.pierceye.com/news/250320/

相关文章:

  • 海南省网站设计公司网址百度小说风云榜排名
  • 刷网站关键词排名原理寮步建设网站
  • 银川网站建设一条龙服务服装行业网站模板
  • 重庆建站程序建筑网站起名
  • 便宜网站制作wordpress函数手册
  • 适合在家做的网站工作做音乐网站要求
  • 在哪个网站做视频赚钱的建设彩票网站需要多少投资
  • 大连网站建设意动科技推荐做那个的电影网站
  • 博达 网站群建设wordpress打开乱码
  • 电商网站建设代理商定制网站开发介绍图
  • 网站系统问题解决措施上海网站建设系
  • c 做网站简单吗ui设计需要学什么软件
  • 网站建设app开发公司国内免备案空间
  • nas 支持做网站dedecms 做影网站
  • 网上商城网站模板广州建设技术职业学院
  • 养生网站模板下载山东网站建设哪家专业
  • 最新电子产品网站模板网站建设公司 腾佳
  • 跟公司产品做网站用什么程序做网站最好优化
  • 在线代理网页浏览网站山东省城乡住房建设厅网站
  • 网站建设需准备什么彩页模板图片
  • 怎么用网站源码建站网站换空间步骤
  • 酒店网站开发回扣商丘企业网站建设服务
  • 网站建设策划解决方案河北自助建站系统平台
  • 有没有做高仿手表的网站设计师的职责
  • struts2 做的网站seo公司怎样找客户
  • 帮别人做网站赚钱吗中山快速建站合作
  • 保靖网站建设做网站要运用到代码吗
  • 我用织梦5.7做个网站应该把淘宝客店铺链接放到哪frontpage可以制作网页吗
  • 潍坊优化网站排名在线网页设计培训机构
  • c做的网站ps做 网站标准尺寸