举例讲解Java设计模式编程中模板方法模式的运用实例

 更新时间:2016年05月05日 09:37:51   作者:匆忙拥挤repeat  
这篇文章主要介绍了Java设计模式编程中模板方法模式的运用实例,模板方法模式强调基于继承的代码复用,需要的朋友可以参考下

模板方法模式定义为:

在一个方法中定义了一个算法的骨架或者步骤,而将一些步骤延迟到子类中去实现。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某一些步骤。
模板方法在基类中定义了一个操作的流程顺序,能够保证该步骤按序进行,有一些步骤的具体实现在基类中已经声明,而将一些变化的步骤的具体实现交给了子类去实现,从而就达到了延迟一些步骤到子类中,模板方法一个最大的好处就是能够设定一个业务流程能够按照一定严格的顺序执行,控制了整个算法的执行步骤。
这个方法将算法定义成一组步骤,其中凡是想让子类进行自定义实现的步骤,均定义为抽象方法。抽象基类的特点是,一般将模板方法设置为final,这样防止子类覆盖该算法的步骤,将一些相同的操作或步骤直接在基类中实现,将一些变化的步骤设置为抽象由子类去完成。

Java实现示例
类图:

20165593331891.jpg (864×606)

/** 
 * 业务流程模板,提供基本框架 
 */ 
public abstract class BaseTemplate { 
   
  public abstract void part1(); 
 
  public abstract void part2(); 
 
  public abstract void part3(); 
 
  //这里为了严格实验结果,使用final不可被重写 
  public final void useTemplateMethod() { 
    part1(); 
    part2(); 
    part3(); 
  } 
} 

/** 
 * 模板实现方式1 
 */ 
public class TemplateMethod extends BaseTemplate { 
 
  @Override 
  public void part1() { 
    System.out.println("模板方法1"); 
  } 
 
  @Override 
  public void part2() { 
    System.out.println("模板方法2"); 
  } 
 
  @Override 
  public void part3() { 
    System.out.println("模板方法3"); 
  } 
 
} 

/** 
 * 模板实现方式2 
 * @author stone 
 * 
 */ 
public class TemplateMethod2 extends BaseTemplate { 
 
  @Override 
  public void part1() { 
    System.out.println("模板方法11"); 
  } 
 
  @Override 
  public void part2() { 
    System.out.println("模板方法22"); 
  } 
 
  @Override 
  public void part3() { 
    System.out.println("模板方法33"); 
  } 
   
} 

public class Test { 
  public static void main(String[] args) { 
    BaseTemplate tm = new TemplateMethod(); 
    tm.useTemplateMethod(); 
     
    System.out.println(""); 
     
    BaseTemplate tm2 = new TemplateMethod2(); 
    tm2.useTemplateMethod(); 
  } 
} 


打印:

模板方法1 
模板方法2 
模板方法3 
 
模板方法11 
模板方法22 
模板方法33 

相关文章

  • logback的ShutdownHook关闭原理解析

    logback的ShutdownHook关闭原理解析

    这篇文章主要为大家介绍了logback的ShutdownHook关闭原理源码解读,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • java+jdbc+mysql+socket搭建局域网聊天室

    java+jdbc+mysql+socket搭建局域网聊天室

    这篇文章主要为大家详细介绍了java+jdbc+mysql+socket搭建局域网聊天室,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • JAVA生成八位不重复随机数最快的方法总结(省时间省空间)

    JAVA生成八位不重复随机数最快的方法总结(省时间省空间)

    随机数在实际中使用很广泛,比如要随即生成一个固定长度的字符串、数字,这篇文章主要给大家介绍了关于JAVA生成八位不重复随机数最快的方法,文中介绍的方法省时间省空间,需要的朋友可以参考下
    2024-03-03
  • RabbitMQ 的七种队列模式和应用场景

    RabbitMQ 的七种队列模式和应用场景

    最近学习RabbitMQ,本文就记录一下RabbitMQ 的七种队列模式和应用场景,方便以后使用,也方便和大家共享,相互交流
    2021-05-05
  • 详解Java泛型及其应用

    详解Java泛型及其应用

    这篇文章主要介绍了Java泛型及其应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • Java把多个对象的list的数据合并的方法示例

    Java把多个对象的list的数据合并的方法示例

    在Java中合并多个List可以使用遍历、Stream API或Apache Commons Collections,通过遍历各个List并将元素添加到新List实现合并,Java 8提供了Stream API,使用Stream.of()和flatMap()可以简洁地合并List,文中给出了多种方法示例,需要的朋友可以参考下
    2024-09-09
  • java如何获取指定文件夹下的所有文件名

    java如何获取指定文件夹下的所有文件名

    这篇文章主要介绍了java如何获取指定文件夹下的所有文件名问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • Java使用反射调用方法示例

    Java使用反射调用方法示例

    这篇文章主要介绍了Java使用反射调用方法,结合实例形式分析了java使用反射调用对象方法的相关操作技巧,需要的朋友可以参考下
    2019-07-07
  • IDEA设置背景为自定义照片的操作方法

    IDEA设置背景为自定义照片的操作方法

    这篇文章主要介绍了IDEA设置背景为自定义照片,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-12-12
  • SpringBoot解决ajax跨域问题的方法

    SpringBoot解决ajax跨域问题的方法

    这篇文章主要为大家详细介绍了SpringBoot解决ajax跨域问题的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03

最新评论