讲师实时统计里的策略模式

策略模式:
人们出行有很多种方式:高铁,飞机,汽车等等,每一种方式就是一种策略
需要一个接口或者抽象类
还有类的具体实现
还有环境类

public abstract class AbstractTeacherRealTimeStatistics {//NOSONAR

/**
 * 实时统计
 *
 * @param teExtendStatistics
 */
public abstract void doRealTimeStatistic(TeExtendStatistics teExtendStatistics);

}
抽象类 AbstractTeacherRealTimeStatistics

public class RealCalculateContext implements InitializingBean {

@Autowired
private ApplicationContext context;

private static final Map<FieldOpType, String> STRATEGY_MAP = Maps.newConcurrentMap();

public static void initStrategy() {
    STRATEGY_MAP.put(FieldOpType.SHARE, TeTeacherShareCollectStatistics.class.getName());
    STRATEGY_MAP.put(FieldOpType.COLLECT, TeTeacherShareCollectStatistics.class.getName());
    STRATEGY_MAP.put(FieldOpType.PRAISE, TeTeacherShareCollectStatistics.class.getName());
    STRATEGY_MAP.put(FieldOpType.SCORE, TeTeacherScoreStatistics.class.getName());
    STRATEGY_MAP.put(FieldOpType.FINISH, TeTeacherFinishStatistics.class.getName());
    STRATEGY_MAP.put(FieldOpType.COURSE, TeTeacherCourseStatistic.class.getName());
    STRATEGY_MAP.put(FieldOpType.TASK, TeTeacherCourseLiveStatistics.class.getName());
    STRATEGY_MAP.put(FieldOpType.EVALUATE, TeTeacherEvaluateStatistics.class.getName());

}

public AbstractTeacherRealTimeStatistics getStrategy(FieldOpType type) {
    if (!STRATEGY_MAP.containsKey(type)) {
        return null;
    }
    try {
        return (AbstractTeacherRealTimeStatistics) context.getBean(Class.forName(STRATEGY_MAP.get(type)));
    } catch (ClassNotFoundException e) {
        log.error("[实时计算]--获取计算策略时错误");
    }
    return null;
}

@Override
public void afterPropertiesSet() throws Exception {
    initStrategy();
}

}
策略控制类

public class TeTeacherFinishStatistics extends AbstractTeacherRealTimeStatistics {

@Override
public void doRealTimeStatistic(TeExtendStatistics teExtendStatistics) {
                        
}

}
具体方法实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值