美文网首页
模板模式

模板模式

作者: 小老头_e6be | 来源:发表于2020-02-19 22:52 被阅读0次

    什么是模板模式?

    一个抽象类公开定义了执行它的方法的模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。模板方法使得子类可以不改变一个算法的结构,即可重定义该算法的某些特定步骤(通用代码在抽象类实现,其他步骤在子类实现)。接下来,将以我工作中用到的场景举例。

    背景

    我们有一个模型训练平台,当我们训练模型的时候,需要预处理,先检测语料是否满足需要,如果满足发送模型训练消息到训练平台,生成训练任务ID返回。如果不满足要求,我们直接返回训练失败。

    代码示例

    1.定义任务执行接口

    public interface BaseTrainService<K, V> {

    V execute(K vo);

    }

    2.训练任务模板抽象类-实现通用模板

    @Slf4j

    public abstract class CommonTrainService<K, V> implements BaseTrainService<K, V> {

    // 预处理

    protected abstract boolean preHandle(K vo);

    // 核心处理流程

    protected abstract V handle(K vo);

    // 后处理

    protected abstract V postHandle(K vo, V dto);

    @Override

    public final V execute(K vo) {

      V dto = null;

      try {

      boolean flag = preHandle(vo);

      if (flag) {

        dto = handle(vo);

      }

      dto = postHandle(vo, dto);

      } catch (Exception e) {

      log.error("处理训练任务异常", e);

      }

      return dto;

    }

    }

    3.训练任务

    简单训练任务-不需要预处理,直接发送训练消息

    @Slf4j

    public class SimpleTrainService extends CommonTrainService<TrainVO, Response<TrainDTO>> {

    @Override

    protected boo

    相关文章

      网友评论

          本文标题:模板模式

          本文链接:https://www.haomeiwen.com/subject/kzozfhtx.html