前言

image.png
image.png
image.png

实现对比

image.png

早绑定

image.png

晚绑定

image.png

定义

image.png

个人实现Java

类结构:

一个接口类、一个抽象类、两个实现类
image.png

实现代码

  1. 实现框架接口 ```java package templateMethod;

/**

  • 框架接口
  • @author luming31864
  • @date 2021/05/24 / public interface Library { /*

    • 主方法 */ public void run();

      /**

    • 步骤一 */ public void step1();

      /**

    • 步骤二 */ public void step2();

      /**

    • 步骤三 */ public void step3(); }
  1. 2. 定义通用的模板实现方法(采用抽象类)
  2. ```java
  3. package templateMethod;
  4. /**
  5. * 抽象模板类
  6. * @description 用于定义通用方法或者作为例子
  7. * @date 2021/5/24
  8. * @author <li> luming31864 Create 1.0
  9. */
  10. public class AbstractTemplateClass implements Library {
  11. @Override
  12. public void run() {
  13. // TODO 定义主流程
  14. step1();
  15. step2();
  16. step3();
  17. }
  18. @Override
  19. public void step1() {
  20. // TODO 定义模板实现方法
  21. System.out.println("步骤一。。。");
  22. }
  23. @Override
  24. public void step2() {
  25. // TODO 定义模板实现方法
  26. System.out.println("步骤二。。。");
  27. }
  28. @Override
  29. public void step3() {
  30. // TODO 定义模板实现方法
  31. System.out.println("步骤三。。。");
  32. }
  33. }
  1. 定义每个应用类(无个性化需求) ```java package templateMethod;

public class Application extends AbstractTemplateClass implements Library{

  1. public static void main(String[] args) {
  2. // 多态-编译时运行
  3. Library library = new Application();
  4. // 直接使用通用方法
  5. library.run();
  6. }

}

  1. 显示结果:<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/2420414/1621859024527-0f0a8835-3391-4f5d-a4ec-aab601e8db02.png#clientId=u08cc3aa3-e438-4&from=paste&height=89&id=u775df22d&margin=%5Bobject%20Object%5D&name=image.png&originHeight=177&originWidth=796&originalType=binary&size=14613&status=done&style=none&taskId=u703ab6c1-b3f0-4d28-87d3-d4c395096ad&width=398)
  2. 4. 定义每个应用类(有个性化需求)
  3. ```java
  4. package templateMethod;
  5. public class Application2 extends AbstractTemplateClass implements Library{
  6. public static void main(String[] args) {
  7. // 多态-编译时运行
  8. Library library = new Application2();
  9. // 直接使用通用方法
  10. library.run();
  11. }
  12. @Override
  13. public void step1() {
  14. System.out.println("重写步骤一。。。");
  15. }
  16. }

显示结果:
image.png