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

网站制作价格多少钱快速开发平台

网站制作价格多少钱,快速开发平台,九冶建设有限公司网站,公众号怎么制作链接策略模式介绍 假设你正在开发一个电商平台,其中涉及到商品的折扣策略。优惠策略有很多种可能,如领取优惠券抵扣、返现促销、拼团优惠等。最初的实现可能会在购物车类中嵌入各种折扣逻辑,导致代码的可维护性和扩展性下降。 下面代码在业务开…

策略模式介绍

假设你正在开发一个电商平台,其中涉及到商品的折扣策略。优惠策略有很多种可能,如领取优惠券抵扣、返现促销、拼团优惠等。最初的实现可能会在购物车类中嵌入各种折扣逻辑,导致代码的可维护性和扩展性下降。

下面代码在业务开发中经常遇到,代码满足了业务需求,客户可根据自己的需求选择不同的优惠策略。但是,经过一段时间的业务积累,促销活动会越来越多。于是,程序员就开始经常加班,每次上活动之前都要通宵改代码,而且要做重复测试,判断逻辑可能也会变得越来越复杂。此时,我们要思考代码是否需要重构。

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. 1. 定义策略接口: 首先,定义一个策略接口,其中声明了策略的方法或行为。这些方法将在不同的具体策略类中实现。
  2. 2. 创建具体策略类: 创建实现策略接口的具体策略类,每个类实现了策略接口中的方法。每个具体策略类代表了一个算法或行为的具体实现。
  3. 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 的依赖注入特性,可以注入一个接口的多个实现,这里采用 List<Strategy> 的形式注入,Spring 也支持通过 Map<String,Strategy> 的形式注入,如果使用 Map 注入,那么 key 就是类名,小伙伴们自己也可以测试一下~

为方便调用我们需要将List<Strategy>转换成Map<StrategyType, Strategy>结构,业务执行时可以直接传递业务参数(这里是我们定义的一个业务枚举StrategyType)获取Bean。这里我们直接使用Spring@PostConstruct注解在方法上,表示此方法是在Spring实例化该Bean之后马上执行此方法。

@Service
public class StrategyFactory {private Map<StrategyType, Strategy> strategyMap = new ConcurrentHashMap<>();@Resourceprivate List<Strategy> 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);}
}

最终结构如下所示:

Strategy.png

总结

  • 使用 Spring 的依赖注入特性,可以注入一个接口的多个实现,很容易就实现了策略模式的选择,这样后续添加一种策略的时候,完全不需要改动主要逻辑,只需添加具体实现即可。
  • 虽然我们是讲策略模式,其实里面还包含了工厂模式。
http://www.dinnco.com/news/39523.html

相关文章:

  • 贵州网站推广公司职业培训学校
  • 光伏电站建设的国家网站搜索引擎推广渠道
  • 高端网站建设苏州站长网站
  • 网站开发可以开发哪些百度seo怎么提高排名
  • 无锡崇安网站建设百度优化关键词
  • ic网站建设百度知道合伙人
  • 阿里云用ip做网站手机端关键词排名优化
  • flash网站制作教程 下载深圳网络推广渠道
  • 微信支付网站开发seowhy教研室
  • 盐城做网站网站搭建平台都有哪些
  • 枣阳网站建设吧百度识图软件
  • 1000学习做网站贵吗西安seo阳建
  • 宁波网站建设公司排名怎么开展网络营销推广
  • 做网站作品是静态seo技术培训广东
  • 进入上海公众号官网seo关键词排名系统
  • 如何做exo网站seo论坛
  • 哪个网站做任务能赚钱百度打广告多少钱一个月
  • 深圳比较好网站制作公司有哪些引流推广公司
  • 商业网站源码建站系统cms
  • 电子商务网站建站流程刷粉网站推广马上刷
  • 成都网站建设开发公司哪家好怎么开个人网站
  • 岳阳网站建设方案seo如何优化关键词排名
  • 闵行网站建设公司新网站快速排名软件
  • 做外贸没有网站可以吗百度关键词查询排名怎么查
  • 琼海做球网站广告软文代理平台
  • 好的网站建设公司如何设置友情链接
  • 网站管理规范网站有吗免费的
  • wordpress当前文章标题论坛如何做seo
  • 深圳网站制作公司售后服务google下载安卓版
  • 成人电商培训学校贵州seo技术培训