策略设计模式:strategy pattern
定义了算法族,分别封装起来,让他们之间可以互相替换。
此模式让算法的变化独立于算法的客户类
客户类,以 接口定义的 实例变量作其域,即,将部分属性 委托给另一个接口管理。 即局部变化独立于其他部分。
该接口有一组实现类,即算法族。由于 面向接口编程,故可使其互相替换。
效果:1.当改变算法族的 实现时,使用该实现的客户类中的属性分别变化,但不影响其他属性。
2.可随时改变客户类中的属性的实现(算法族内替换)。
使用到的设计原则:单一职责 合成复用 依赖倒置
相关文章
快速导入上亿行数据文件到数据库表(使用 JDBC 的 executeBatch)
最近在 cnblogs 网站上,看其他人博客,谈及一个包含很多行(一亿)的大文件,一周之内,将其数据导入到数据库表。 我谈到可以使用 "使用数据库事务,分批 commit 到数据库,每批次有 5000...
单例模式只会懒汉饿汉?读完本篇让你面试疯狂加分
前言 说到设计模式,面试排在第一位的十有八九是单例模式,这一定是大部分人从入门到面试工作都避不开的基础知识。 但单例模式不仅有懒汉模式和饿汉模式两种写法,往往我们掌握的都是最基础的写法,如果你有阅读过...
【Java中的线程】java.lang.Thread 类分析
进程和线程 联想一下现实生活中的例子--烧开水,烧开水时是不是不需要在旁边守着,交给热水机完成,烧开水这段时间可以去干一点其他的事情,例如将衣服丢到洗衣机中洗衣服。这样开水烧完,衣服洗的也差不多了。这...
M1 MAC 装ubuntu更换镜像源
记录一下今天突发奇想装个ubuntu遇到问题 w镜像源:更换镜像源网上教程基本对的,但要注意机型(ps:m1 mac) 补:很多时候是对问题理解不到位,比如我直接搜索arm ubuntu镜像源 认识有...
SpringCloud微服务实战——搭建企业级开发框架(二十八):扩展MybatisPlus插件DataPermissionInterceptor实现数据权限控制
一套完整的系统权限需要支持功能权限和数据权限,前面介绍了系统通过RBAC的权限模型来实现功能的权限控制,这里我们来介绍,通过扩展Mybatis-Plus的插件DataPermissionInterce...
0.1 + 0.2 == 0.3 吗?
为什么负数要用补码表示? 负数用补码表示的原因主要是为了统一正数的加法和减法运算。毕竟,数字的加法和减法是一种非常常见的运算。不要搞专业化,试着统一运作。[En]The reason why nega...
JavaSE-时间差
```java public static String getDiffDateStr(Date startTime,Date endTime){ long diff = endTime.getTim...
面向对象3(Java)
即同一方法可以根据发送对象的不同而采用多种不同的行为方式 对象的实际类型已确定,但有许多引用类型可以指向该对象[En]The actual type of an object is determine...
1.某公司笔试SQL题
1.用一条SQL语句查询出每门课都大于80分的学生姓名 name kecheng fenshu 大狗子 语文 81 大狗子 数学 75 二狗子 语文 76 二狗子 数学 90 小狗子 语文 81 小狗...
ftp多文件压缩下载
@GetMapping(value = "/find") public String findfile(String filePath, String fileNames, Htt...
MySQL学习-eclipse导入jar包
导包先有包 !!!一定要下载和自己MySQL版本一样的jar包!!! !!!一定要下载和自己MySQL版本一样的jar包!!! !!!一定要下载和自己MySQL版本一样的jar包!!! 如果没有包,参...