Spring框架中如何演示策略模式应用实例?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1773个文字,预计阅读时间需要8分钟。
背景:近期有一个需求,是为满足特定条件的用户群发展营销销邮件。用户来源多样,包括从ES查询、从CSV导入、从MongoDB查询等。
需求描述:需要开发一个简洁优雅的解决方案,以方便地满足这一需求。
背景
最近在忙一个需求,大致就是给满足特定条件的用户发营销邮件,但是用户的来源有很多方式:从 ES 查询的、从 csv 导入的、从 MongoDB 查询….. 需求很简单,但是怎么写的优雅,方便后续扩展,就存在很多门道了。
我们的项目是基于 Spring Boot 开发的,因此这篇文章也会基于 Spring Boot 作为基础框架,教你如何使用 Spring 依赖注入的特性,优雅的实现策略模式。
1. 简单粗暴
最简单粗暴直接的方式莫过于 if...else… 了,伪代码如下:
if(来源 == ES){ // TODO: ES Query }else if(来源 == CSV){ // TODO: Read CSV File }else if(来源 == MongoDB){ // TODO: MongoDB Query }
如果后面还需要从其他平台获取,那就在接着添加 else if...,这种方式固然简单直接,但是当后续扩展的方式越来越多,相应的if...else...也会越来越长,emmm….. 怎么说呢,黑猫白猫,能抓到老鼠的就是好猫。
2. 策略模式
在 Spring 环境下实现策略模式异常简单,毕竟 Spring 提供的依赖注入简直就是开发利器~
既然是策略模式,那么定义策略肯定是首当其冲,策略我们使用枚举实现最佳。
本文共计1773个文字,预计阅读时间需要8分钟。
背景:近期有一个需求,是为满足特定条件的用户群发展营销销邮件。用户来源多样,包括从ES查询、从CSV导入、从MongoDB查询等。
需求描述:需要开发一个简洁优雅的解决方案,以方便地满足这一需求。
背景
最近在忙一个需求,大致就是给满足特定条件的用户发营销邮件,但是用户的来源有很多方式:从 ES 查询的、从 csv 导入的、从 MongoDB 查询….. 需求很简单,但是怎么写的优雅,方便后续扩展,就存在很多门道了。
我们的项目是基于 Spring Boot 开发的,因此这篇文章也会基于 Spring Boot 作为基础框架,教你如何使用 Spring 依赖注入的特性,优雅的实现策略模式。
1. 简单粗暴
最简单粗暴直接的方式莫过于 if...else… 了,伪代码如下:
if(来源 == ES){ // TODO: ES Query }else if(来源 == CSV){ // TODO: Read CSV File }else if(来源 == MongoDB){ // TODO: MongoDB Query }
如果后面还需要从其他平台获取,那就在接着添加 else if...,这种方式固然简单直接,但是当后续扩展的方式越来越多,相应的if...else...也会越来越长,emmm….. 怎么说呢,黑猫白猫,能抓到老鼠的就是好猫。
2. 策略模式
在 Spring 环境下实现策略模式异常简单,毕竟 Spring 提供的依赖注入简直就是开发利器~
既然是策略模式,那么定义策略肯定是首当其冲,策略我们使用枚举实现最佳。

