策略模式及Spring整合策略模式
策略模式
抽象策略类
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整合策略模式相关推荐
- 整合经营模式之道——整合经营模式IMO的股票畅想
整合经营模式之道 整合经营模式IMO的股票畅想 ...
- 如何使用 Spring 实现策略模式+工厂模式
欢迎关注方志朋的博客,回复"666"获面试宝典 一.策略模式 策略模式定义了一组算法,将每个算法都封装起来,并且使它们之间可以互换 1.策略模式主要角色 主要角色如下: 封装角色( ...
- spring AOP策略模式使用
1.策略模式 The Strategy Pattern defines a family of algorithms,encapsulates each one,and makes them inte ...
- 原来使用 Spring 实现策略模式可以这么简单!
策略模式作为一种软件设计模式,指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法,可以替代代码中大量的 if-else. 比如我们生活中的场景:买东西结账可以使用微信支付.支付宝支付或者银行 ...
- java spring 实现策略,Spring 环境下实现策略模式的示例
背景 最近在忙一个需求,大致就是给满足特定条件的用户发营销邮件,但是用户的来源有很多方式:从 ES 查询的.从 csv 导入的.从 MongoDB 查询-.. 需求很简单,但是怎么写的优雅,方便后续扩 ...
- 设计模式(三)策略模式——在Spring中使用策略模式
前言 在 设计模式(一)策略模式 -- 策略模式结构 和 设计模式(二)策略模式 -- 在程序中通过枚举使用策略模式 两篇博文中分析了策略模式的基础使用,在实际的项目开发中要结合spring容器使用策 ...
- 策略模式、策略模式与Spring的碰撞
策略模式是GoF23种设计模式中比较简单的了,也是常用的设计模式之一,今天我们就来看看策略模式. 实际案例 我工作第三年的时候,重构旅游路线的机票查询模块,旅游路线分为四种情况: 如果A地-B地往返都 ...
- Spring实现策略模式
通过Spring实现策略模式 当程序中使用太多的if/else/switch来处理不同类型的业务时,会变得极难维护,通过策略模式可以更容易的实现业务扩展和维护. 标准策略模式介绍 比如说对象的某个行为 ...
- php 策略模式实现原理,php 策略模式原理与应用深入理解
php 策略模式原理与应用深入理解,策略,可以用,接口,简单,算法 php 策略模式原理与应用深入理解 易采站长站,站长之家为您整理了php 策略模式原理与应用深入理解的相关内容. 本文实例讲述了ph ...
最新文章
- html导航栏点击不能跳转,无法单击导航栏中的链接CSS HTML
- Unity面试题精选(3)
- 吃豆人动态模型创建---canvas
- Flutter进阶—质感设计之表单输入
- 高德地图怎么搜索marker_百度、高德、腾讯地图坐标认证怎么弄,3分钟轻松自助认证...
- dudu注意:这个可能是bug吧?
- 数字盲打怎么练_数字键盘区的功能及指法技巧
- 用cglib生成的代理类取不到注解的问题
- 博微JAVA面试_博微Java笔试题
- oracle 索引 lob 迁移,Oracle Lob类型存储浅析( alter index lob索引 rebuild tablespace XX报错问题)...
- 2018浙大计算机考研经验
- 二分法求三次方根代码
- mysql 设置 sql_mode
- 情报学的主要学术期刊
- 金牛来到,福气来到——TcaplusDB新年放送
- Jest 里配置 babelrc,支持import导入
- 360周鸿祎:没有人比我更懂互联网安全
- php获取访问者ip地址,PHP获取访问者IP地址的二种方法
- 转载:自动化测试金字塔与反模式
- weui uploader java_Weui 文件上传完整版示例
热门文章
- 6月份Github上最热门的开源项目排行出炉
- PHP跌出前十,Python依然霸占榜首,C#有望摘得年度编程语言 TIOBE 12 月编程语言排行榜
- 手机QQ各个版本大集合【转】
- 计算机不能检测到第二个屏幕,win10检测不到第二个显示器怎么处理_win10第二个显示器不能识别解决方法...
- 如何使用Office 365安装Office 2013
- 新版不限速下载器PanDownload:20~60MB/S
- css hack解决IE5 IE5.5 IE6 Firefox浏览器兼容性
- 计算机学习的一些书籍推荐
- O365: 451 5.7.3 STARTTLS is required to send mail
- JS--闭包--渡一教育(视频笔记)