欢迎来到代码驿站!

JAVA代码

当前位置:首页 > 软件编程 > JAVA代码

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

时间:2020-10-19 10:22:00|栏目: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 

上一篇:Spinrg WebFlux中Cookie的读写的示例

栏    目:JAVA代码

下一篇:详解JavaFX桌面应用开发-Group(容器组)

本文标题:举例讲解Java设计模式编程中模板方法模式的运用实例

本文地址:http://www.codeinn.net/misctech/13540.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有