设计模式|第七篇:模板方法设计模式

1. 概念

模板方法模式,定义一个操作中的算法骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤

2.实现步骤

  • 定义抽象类,类中定义算法骨架,公有逻辑抽象类实现,其它私有逻辑延迟至子类实现
  • 子类继承抽象类,实现具体算法

3.案例

本例以遇近做的需求数据迁移为例,有两种类型数据要做迁移,其中数据迁移前需对传入参数进行校验,同时停止流程,最后将传入数据转换成对应迁移数据,入库

(1)定义抽象模板,实现公共逻辑

public abstract class AbstractTemplate {

  public void dataMigration(){
    //1.数据校验
    dataValidation();

    //2.停止流程
    stopProcess();

    //3.数据转换
    dataConversion();

    //4.迁移入库
    doMigration();
  }

  protected abstract void doMigration();


  protected abstract void dataConversion();


  protected void stopProcess() {
    System.out.println("停止现有流程");
  }

  protected void dataValidation() {
    System.out.println("校验传入参数");
  }

}

(2) 定义具体迁移对象,并实现私有逻辑

// 迁移方案一,实现抽象模板
public class MigrationPlanOne extends AbstractTemplate {

  @Override
  protected void dataConversion() {
    System.out.println("转换为迁移方案一所需数据格式");
  }

  @Override
  protected void doMigration() {
    System.out.println("执行迁移方案一数据迁移");
  }
}
------------------------------------------------------------------------------
// 迁移方案二,实现抽象模板
public class MigrationPlanTwo extends AbstractTemplate {

  @Override
  protected void dataConversion() {
    System.out.println("执行迁移方案二数据转换");
  }

  @Override
  protected void doMigration() {
    System.out.println("执行迁移方案二数据迁移");
  }
}

(3)测试案例

public class MainTest {

  public static void main(String[] args) {
    AbstractTemplate migrationPlanOne = new MigrationPlanOne();
    migrationPlanOne.dataMigration();
    System.out.println("++++++++++++++++++++++++++++++++++");
    AbstractTemplate migrationPlantwo = new MigrationPlanTwo();
    migrationPlantwo.dataMigration();

  }
}
------------------------------------------------------------------------------
//输出结果
校验传入参数
停止现有流程
转换为迁移方案一所需数据格式
执行迁移方案一数据迁移
++++++++++++++++++++++++++++++++++
校验传入参数
停止现有流程
执行迁移方案二数据转换
执行迁移方案二数据迁移

4.案例结构图

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值