概念

  • 在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行
  • image.png

主要角色

  • 抽象类/抽象模板(Abstract Class)
  • 具体子类/具体实现(Concrete Class) ```java /**

    • 抽象类/抽象模板 */ public abstract class CookTemplate {

      /**

      • 定义算法: 定义好了模板
      • 父类可以实现某些步骤
      • 留关键给子类 */ public void cook(){ //定义算法步骤 heating(); //v addfood(); addsalt(); stirfry(); //v end(); //v }

      //加热方法 public void heating(){

      1. System.out.println("开火...");

      };

      //添加食物 public abstract void addfood();

      //加盐 public abstract void addsalt();

      //翻炒 public void stirfry(){

      1. System.out.println("翻炒中...");

      };

      //出锅 public void end(){

      1. System.out.println("出锅....");

      };

}

  1. ```java
  2. /**
  3. * 具体子类/具体实现
  4. */
  5. public class AutoCookMachine extends CookTemplate{
  6. @Override
  7. public void addfood() {
  8. System.out.println("放了三个小白菜");
  9. }
  10. @Override
  11. public void addsalt() {
  12. System.out.println("放了三勺盐");
  13. }
  14. }

应用场景

  • Spring的整个继承体系都基本用到模板方法; BeanFactory.getBean(1,2,3,4)—A1—-A2—-A3—-A4(全部被完成)
  • JdbcTemplate、RedisTemplate都允许我们再扩展…..
  • 我们自己的系统也应该使用模板方法组织类结构