策略模式定义及结构:
策略模式定义:策略模式为一系列父类与子类的关系,为一系列子类提供统一方法,一个父类多个子类,由执行类作为统一入口,根据不同规则执行不同策略
策略模式主要由以下几个模块组成:
- 抽象策略接口:定义一个执行的公共接口
- 具体策略实现类:该类实现了抽象策略接口,并在各个实现类中定义不同的执行方法
- 统一入口类:该类提供统一入口,根据用户自身需求或者传入参数执行不同的策略
模式使用案例:
策略接口类:
package com.hyt.controller.strategy;
/**
* 此为策略接口
*/
public interface StrategyExecutor {
void executeStrategy();
}
日数据同步任务策略:
package com.hyt.controller.strategy;
public class DataSyncTaskImpl implements StrategyExecutor{
public void executeStrategy() {
System.out.println("此方法执行日数据同步任务");
}
}
日终批量任务策略:
package com.hyt.controller.strategy;
public class DayBatchTaskSeviceImpl implements StrategyExecutor{
public void executeStrategy() {
System.out.println("此方法执行日终批量任务");
}
}
放款统计任务策略:
package com.hyt.controller.strategy;
public class LoanStatisticsTaskSeviceImpl implements StrategyExecutor{
public void executeStrategy() {
System.out.println("此方法执行放款统计任务");
}
}
月用户活跃值统计任务策略:
package com.hyt.controller.strategy;
public class MonthUserTotalSeviceImpl implements StrategyExecutor{
public void executeStrategy() {
System.out.println("月用户活跃值统计任务");
}
}
统一执行入口:当用于传入不同的type时执行不同策略
package com.hyt.controller.strategy;
public class CommonEntranceController {
private StrategyExecutor executor;
public void execute(Integer type){
switch (type){
case 1:
//日数据同步任务
executor = new DataSyncTaskImpl();
case 2:
//日终批量任务
executor = new DayBatchTaskSeviceImpl();
case 3:
//放款统计任务
executor = new LoanStatisticsTaskSeviceImpl();
default:
//月用户活跃值统计任务
executor = new MonthUserTotalSeviceImpl();
}
//执行
executor.executeStrategy();
}
}
策略模式常见的运用场景:
1.工业大数据进行设备使用预测时,通过导入数据,进行机器学习,不同的数据执行不同的算法,得出不同的函数公式,如数据类型一得到公式y=ax+b,数据类型二得到公式y=ax^2+bx+c,下一次数据进来则根据入参的不同执行不同的函数策略
2.定时任务框架:配置表中配置不同的实现类,任务配置不同的执行策略