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

网站安全狗服务名怎么做触屏版网站

网站安全狗服务名,怎么做触屏版网站,重庆网站开发公司,网站建设功能报策略模式介绍 假设你正在开发一个电商平台#xff0c;其中涉及到商品的折扣策略。优惠策略有很多种可能#xff0c;如领取优惠券抵扣、返现促销、拼团优惠等。最初的实现可能会在购物车类中嵌入各种折扣逻辑#xff0c;导致代码的可维护性和扩展性下降。 下面代码在业务开…策略模式介绍 假设你正在开发一个电商平台其中涉及到商品的折扣策略。优惠策略有很多种可能如领取优惠券抵扣、返现促销、拼团优惠等。最初的实现可能会在购物车类中嵌入各种折扣逻辑导致代码的可维护性和扩展性下降。 下面代码在业务开发中经常遇到代码满足了业务需求客户可根据自己的需求选择不同的优惠策略。但是经过一段时间的业务积累促销活动会越来越多。于是程序员就开始经常加班每次上活动之前都要通宵改代码而且要做重复测试判断逻辑可能也会变得越来越复杂。此时我们要思考代码是否需要重构。 public static void main(String[] args) {PromotionActivity promotionActivity  null;String promotionKey  COUPON;if(StringUtils.equals(promotionKey,COUPON)){promotionActivity  new PromotionActivity(new CouponStrategy());}else if(StringUtils.equals(promotionKey,CASHBACK)){promotionActivity  new PromotionActivity(new CashbackStrategy());}//......promotionActivity.execute(); }下面我们看下策略模式如何优雅的解决这个问题。 策略模式是一种行为型设计模式它允许在运行时选择算法的一种方式使得算法可以独立于客户端代码进行变化。在业务代码中使用策略模式可以帮助你实现可维护、可扩展和可变化的代码结构。下面是在业务代码中使用策略模式的一般步骤 1. 定义策略接口 首先定义一个策略接口其中声明了策略的方法或行为。这些方法将在不同的具体策略类中实现。2. 创建具体策略类 创建实现策略接口的具体策略类每个类实现了策略接口中的方法。每个具体策略类代表了一个算法或行为的具体实现。3. 在客户端代码中使用策略 在客户端代码中通过持有策略接口类型的引用可以在运行时选择不同的策略实现。这样客户端代码可以根据需要切换或替换不同的策略。 业务代码中如何使用 现在后端项目基本都是基于 Spring Boot 开发的我们基于 Spring Boot 作为基础框架教你如何使用 Spring 依赖注入的特性优雅的实现策略模式。 既然是策略模式那么定义策略肯定是首当其冲策略我们使用枚举实现最佳 public enum StrategyType {STRATEGY_A(1, 策略A),STRATEGY_B(2, 策略B);private int code;private String desc;StrategyType(int code, String desc) {this.code  code;this.desc  desc;}public int getCode() {return code;}public String getDesc() {return desc;} } 再定义一个接口接口有两个方法getType用来获取策略的业务类型execute用来执行业务 public interface Strategy {void execute();StrategyType getType();} 这里我们实现个策略StrategyA Component(strategyA) public class StrategyA implements Strategy {Overridepublic void execute() {System.out.println(Executing strategy A);}Overridepublic StrategyType getType() {return StrategyType.STRATEGY_A;} } 再实现个策略StrategyB Component(strategyB) public class StrategyB implements Strategy {Overridepublic void execute() {System.out.println(Executing strategy B);}Overridepublic StrategyType getType() {return StrategyType.STRATEGY_B;}} 我们通过定义一个工厂类然后使用 Spring 的依赖注入特性可以注入一个接口的多个实现这里采用 ListStrategy 的形式注入Spring 也支持通过 MapString,Strategy 的形式注入如果使用 Map 注入那么 key 就是类名小伙伴们自己也可以测试一下~ 为方便调用我们需要将ListStrategy转换成MapStrategyType, Strategy结构业务执行时可以直接传递业务参数这里是我们定义的一个业务枚举StrategyType获取Bean。这里我们直接使用Spring的PostConstruct注解在方法上表示此方法是在Spring实例化该Bean之后马上执行此方法。 Service public class StrategyFactory {private MapStrategyType, Strategy strategyMap  new ConcurrentHashMap();Resourceprivate ListStrategy strategyList;public void execute(StrategyType type) {strategyMap.get(type).execute();}PostConstructpublic void init() {for (Strategy strategy : strategyList) {strategyMap.put(strategy.getType(), strategy);}} }最后我们在业务类StrategyService直接使用就行了。 Service public class StrategyService {Resourceprivate StrategyFactory strategyFactory;public void executeStrategy(StrategyType type) {strategyFactory.execute(type);} } 最终结构如下所示 总结 使用 Spring 的依赖注入特性可以注入一个接口的多个实现很容易就实现了策略模式的选择这样后续添加一种策略的时候完全不需要改动主要逻辑只需添加具体实现即可。虽然我们是讲策略模式其实里面还包含了工厂模式。
http://www.w-s-a.com/news/175916/

相关文章:

  • 网站集群建设相关的招标南通seo网站建设费用
  • 网络培训的网站建设能够做二维码网站
  • 网站类游戏网站开发wordpress 文章首标点
  • 徐州网站建设熊掌号免费推广网站入口2020
  • 网站建设有前途长春高铁站
  • 做网站网课阿里云域名查询系统
  • saas建站平台有哪些简述网站建设基本流程答案
  • 个人怎么做网站网站浏览思路
  • 网站建设里的知识长沙网络营销公司
  • 网站建设与维护大作业pc网站转换成微网站
  • php网站开发经典教材东莞网站开发
  • 教育培训手机网站模板下载跨境电商培训哪家最好
  • 网站开发淄博网站被降权会发生什么影响吗
  • 网站开发常用的语言东城手机网站制作
  • 微小店网站建设平台手机优化加速有什么用
  • 沈阳酒店企业网站制作公司竞价网站怎么做seo
  • 中山企业网站多少钱学网站建设的好处
  • 做官网网站哪家公司好jianux wordpress
  • 插件素材网站新站seo优化快速上排名
  • 网站注销主体填写原因asp响应式h5网站源码下载
  • 电商类网站模板下载济南市建设网官网
  • 万户网络做网站如何采集器wordpress
  • 襄阳网站建设企业查看 wordpress 插件
  • 网站地址申请京东联盟怎么做网站
  • 三亚市城乡建设局网站网站口碑营销
  • 图书租借网站 开发企业网站搜索优化外
  • 新乡个人网站建设哪家好免费的图片做视频在线观看网站
  • 洛阳工程建设信息网站山西响应式网页建设哪里好
  • 企业网站建设市场的另一面wordpress分类插件
  • 网站建设名头公司展厅装修