设计模式之——模板方法模式(TemplateMethod)

模板方法模式是一种设计模式,它定义了操作的框架,允许子类在不改变算法结构的情况下重定义某些步骤。在Java中,模板方法通过抽象类定义模板方法和钩子函数,子类实现具体步骤。例如,Methods类作为模板,Actives类继承并实现其方法。模板方法模式常用于系统框架中,如WindowListener的事件处理方法、ASM的ClassVisitor等,实现代码复用和定制化行为。

定义

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

所谓的模板方法模式实际上就是钩子函数

实现

使用代码举例:

  1. 首先抽象一个模板对象Methods用于管理方法:
abstract class Methods {
    void template() {
        method1();
        method2();
    }
    abstract void method1();
    abstract void method2();
}

2.写一个动作对象Actives用于实现方法:

class Actives extends Methods{
    @Override
    void method1() {
        System.out.println("method1");
    }
    @Override
    void method2() {
        System.out.println("method2");
    }
}

3.主方法调用动作对象方法:

public class Main {
    public static void main(String[] args) {
        Methods m = new Actives();
        m.template();
    }
}

运行结果:结果

        解释一下这段代码,其中模板对象Methods中有一个方法template(),在其方法体中调用了method1()method2(),这就类似一个模板。然后动作对象Actives继承Methods,并重写method1()method2(),这样在主程序中调用模板方法时会根据模板中设定好的顺序或逻辑进行重写好的方法内容。

应用

        凡是我们重写的方法,系统帮我们自动调用的,都是模板方法。

  • WindowListener
    • windowClosing()
    • window***()
  • ASM
    • ClassVisitor()
  • ···
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值