模板模式

什么是模板模式?

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


背景

我们有一个模型训练平台,当我们训练模型的时候,需要预处理,先检测语料是否满足需要,如果满足发送模型训练消息到训练平台,生成训练任务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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容