23中设计模式--模板方法模式---Template Method Pattern

参考:https://blog.csdn.net/weixin_48052161/article/details/119655854

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

  • 这里的算法的结构,可以理解为你根据需求设计出来的业务流程。特定的步骤就是指那些可能在 内容上存在变数的环节。

日常生活中的模板方法:
造房时,地基、走线、水管都一样,只有在建筑后期装修上才有差异
西游记里面菩萨定好的 81 难,这就是一个顶层的逻辑骨架。
对于汽车,车从发动到停车的顺序是相同的,不同的是引擎声、鸣笛声等
spring 中对 MYbatis的支持,将一些已经定好的方法封装起来,比如开启事务、获取 Session、关闭 Session 等,程序员不重复写那些已经规范好的代码,直接丢一个实体就可以保存。

代码演示:
计算加减乘除,把这四项基本运算,抽象成一个模板方法.
在这里插入图片描述
模板抽象类:AbstractCalculater

package com.example.dtest.design23.templateMode;

public abstract class AbstractCalculater {

    abstract public int calculate(int num1,int num2);

    /*主方法,实现对本类其他方法的调用*/
    public final int calculate(String exp,String opt){
        int array[] = split(exp,opt);
        return calculate(array[0],array[1]);
    }

//    提取参数
    public int[] split(String exp,String opt){
        String array[] = exp.split(opt);
        int arrayInt[] = new int[2];
        arrayInt[0] = Integer.parseInt(array[0].trim());//trim():除去字符串中空白字符
        arrayInt[1] = Integer.parseInt(array[1].trim());
        return arrayInt;
    }

}

实现膜版的加法算法类:Plus

package com.example.dtest.design23.templateMode;

public class Plus extends AbstractCalculater{
    @Override
    public int calculate(int num1, int num2) {
        return num1 + num2;
    }
}

测试类:

package com.example.dtest.design23.templateMode;

public class TemplateModeTest {

    public static void main(String[] args) {

        String exp = "8 + 8";
        AbstractCalculater calculater = new Plus();
        int result = calculater.calculate(exp, "\\+");
        System.out.println("8 + 8="+result);

    }

}

模板方法:抽象类的继承和实现天生用于模板方法的,可以说它就是为模板模式而生,细品!!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值