其实就是钩子函数,回调函数===>都是模板方法模式 与观察者模式类似 与观察者模式的关系与区别 写了一个方法,其中调用其他方法定义了一个模板,子类具体实现这些其他方法,再调用模板方法以达到在木板上个性化定制的需求===>整个方法按照模板去执行(更多地指的是顺序) 一般将模板方法的权限设置为包权限或者低权限**(只能重写,不能直接访问)**

UML类图

  • 父类调用了他的一个方法,在这个方法中有可能调用了被子类重写的方法
  • 子类想要实现特殊的方法时,只需要实现要重写的方法即可

image.png

一直在用

  • 凡是我们重写一个方法,系统帮我们自动调用的,都可以称作为template模板方法

image.png

使用示例

  1. package com.mashibing.dp.TemplateMethod;
  2. public class Main {
  3. public static void main(String[] args) {
  4. // 用接口F接受接口F的实现类C1类型的对象
  5. F f = new C1();
  6. f.m();
  7. }
  8. }
  9. abstract class F {
  10. public void m() {
  11. op1();
  12. op2();
  13. }
  14. // 一般定义成包权限或者低权限(只能重写,不能直接访问)
  15. abstract void op1();
  16. abstract void op2();
  17. }
  18. class C1 extends F {
  19. @Override
  20. void op1() {
  21. System.out.println("op1");
  22. }
  23. @Override
  24. void op2() {
  25. System.out.println("op2");
  26. }
  27. }

🤏随想

  1. 私有方法可以被继承吗?