策略模式

抽象策略类

    interface SortService{int[] sort(int arr[]);}

具体策略类

    class InsertionSortServiceImpl implements SortService{@Overridepublic int[] sort(int[] arr) {for (int i = 1; i < arr.length; i++) {int j = i-1;int tmp = arr[i];for (; j >= 0; --j) {if (arr[j] > tmp){arr[j+1] = arr[j];}else {break;}}arr[j+1] = tmp;}return arr;}}

冒泡排序

    class BubbleSortServiceImpl implements SortService{@Overridepublic int[] sort(int[] arr) {for (int i = arr.length-1; i >= 0 ; --i) {for (int j = 0; j < i; j++) {if (arr[j] > arr[j+1]){int tmp = arr[j];arr[j] = arr[j+1];arr[j+1] = tmp;}}}return arr;}}

常规调用

    class ArrayHandle implements SortService{private Sort sortObj;public void setSortObj(Sort sortObj) {this.sortObj = sortObj;}@Overridepublic int[] sort(int[] arr) {return sortObj.sort(arr);}}

Spring整合策略模式

/*** @author yecxf* @created time 2020/11/3 23:47* SortContext容器*/
@Service
public class SortContextService {private Map<String, SortService> map = new HashMap<>();// 将所有实现 SortService 接口的子类注入进来@Autowiredpublic SortContextService(Map<String,SortService> hashMap){this.map = hashMap;}public SortService getSortService(String key){return map.get(key);}
}

调用

 @Autowiredprivate SortContextService sortContextService;@Testpublic void testSortStrategy(){SortService bubbleSortServiceImpl = sortContextService.getSortService("bubbleSortServiceImpl");int a[] = {123,1234,41,4};int[] sortResult = bubbleSortServiceImpl.sort(a);for (int i : sortResult) {System.out.println(i);}}

策略设计模式是将算法的定义与使用分开

工厂设计模式是将对象的创建和使用分开

策略模式及Spring整合策略模式相关推荐

  1. 整合经营模式之道——整合经营模式IMO的股票畅想

    整合经营模式之道                                                             整合经营模式IMO的股票畅想                  ...

  2. 如何使用 Spring 实现策略模式+工厂模式

    欢迎关注方志朋的博客,回复"666"获面试宝典 一.策略模式 策略模式定义了一组算法,将每个算法都封装起来,并且使它们之间可以互换 1.策略模式主要角色 主要角色如下: 封装角色( ...

  3. spring AOP策略模式使用

    1.策略模式 The Strategy Pattern defines a family of algorithms,encapsulates each one,and makes them inte ...

  4. 原来使用 Spring 实现策略模式可以这么简单!

    策略模式作为一种软件设计模式,指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法,可以替代代码中大量的 if-else. 比如我们生活中的场景:买东西结账可以使用微信支付.支付宝支付或者银行 ...

  5. java spring 实现策略,Spring 环境下实现策略模式的示例

    背景 最近在忙一个需求,大致就是给满足特定条件的用户发营销邮件,但是用户的来源有很多方式:从 ES 查询的.从 csv 导入的.从 MongoDB 查询-.. 需求很简单,但是怎么写的优雅,方便后续扩 ...

  6. 设计模式(三)策略模式——在Spring中使用策略模式

    前言 在 设计模式(一)策略模式 -- 策略模式结构 和 设计模式(二)策略模式 -- 在程序中通过枚举使用策略模式 两篇博文中分析了策略模式的基础使用,在实际的项目开发中要结合spring容器使用策 ...

  7. 策略模式、策略模式与Spring的碰撞

    策略模式是GoF23种设计模式中比较简单的了,也是常用的设计模式之一,今天我们就来看看策略模式. 实际案例 我工作第三年的时候,重构旅游路线的机票查询模块,旅游路线分为四种情况: 如果A地-B地往返都 ...

  8. Spring实现策略模式

    通过Spring实现策略模式 当程序中使用太多的if/else/switch来处理不同类型的业务时,会变得极难维护,通过策略模式可以更容易的实现业务扩展和维护. 标准策略模式介绍 比如说对象的某个行为 ...

  9. php 策略模式实现原理,php 策略模式原理与应用深入理解

    php 策略模式原理与应用深入理解,策略,可以用,接口,简单,算法 php 策略模式原理与应用深入理解 易采站长站,站长之家为您整理了php 策略模式原理与应用深入理解的相关内容. 本文实例讲述了ph ...

最新文章

  1. html导航栏点击不能跳转,无法单击导航栏中的链接CSS HTML
  2. Unity面试题精选(3)
  3. 吃豆人动态模型创建---canvas
  4. Flutter进阶—质感设计之表单输入
  5. 高德地图怎么搜索marker_百度、高德、腾讯地图坐标认证怎么弄,3分钟轻松自助认证...
  6. dudu注意:这个可能是bug吧?
  7. 数字盲打怎么练_数字键盘区的功能及指法技巧
  8. 用cglib生成的代理类取不到注解的问题
  9. 博微JAVA面试_博微Java笔试题
  10. oracle 索引 lob 迁移,Oracle Lob类型存储浅析( alter index lob索引 rebuild tablespace XX报错问题)...
  11. 2018浙大计算机考研经验
  12. 二分法求三次方根代码
  13. mysql 设置 sql_mode
  14. 情报学的主要学术期刊
  15. 金牛来到,福气来到——TcaplusDB新年放送
  16. Jest 里配置 babelrc,支持import导入
  17. 360周鸿祎:没有人比我更懂互联网安全
  18. php获取访问者ip地址,PHP获取访问者IP地址的二种方法
  19. 转载:自动化测试金字塔与反模式
  20. weui uploader java_Weui 文件上传完整版示例

热门文章

  1. 6月份Github上最热门的开源项目排行出炉
  2. PHP跌出前十,Python依然霸占榜首,C#有望摘得年度编程语言 TIOBE 12 月编程语言排行榜
  3. 手机QQ各个版本大集合【转】
  4. 计算机不能检测到第二个屏幕,win10检测不到第二个显示器怎么处理_win10第二个显示器不能识别解决方法...
  5. 如何使用Office 365安装Office 2013
  6. 新版不限速下载器PanDownload:20~60MB/S
  7. css hack解决IE5 IE5.5 IE6 Firefox浏览器兼容性
  8. 计算机学习的一些书籍推荐
  9. O365: 451 5.7.3 STARTTLS is required to send mail
  10. JS--闭包--渡一教育(视频笔记)