• 公用技术——设计模式18——行为型模式——模板模式


    1、概念

      模板模式是规范定义流程,并将公共流程和独立流程分离,在父类中实现公共流程,在具体的子类中实现独立流程,不同的子类提供各自独立流程的实现方式。

      流程也可以表述为算法。

      父类的职责是规范流程,它的方式可以是接口,也可以是抽象类,如果有公共的流程,最好使用抽象类,使用abstract修饰独立流程的方法,为公共流程提供通用的实现方式。

      子类的职责是提供独立流程的实现方式。

    2、UML图

      

    3、代码

      父类ParentClass,规范流程,提供公共流程的实现

    /**
     * 
     * @Title: ParentClass.java
     * @Package template
     * @Description: 规范流程,并为公共的流程提供通用实现。
     * @version V1.0
     */
    public abstract class ParentClass {
    	/**
    	 * 
    	 * @Title: commonStep
    	 * @Description: 这个方法规范流程,不允许子类重写,所以使用final修饰
    	 */
    	public final void commonStep() {
    		commonStep1();
    		commonStep2();
    		independentStep();
    	}
    
    	/**
    	 * 
    	 * @Title: commonStep1
    	 * @Description: 公共流程1
    	 */
    	private void commonStep1() {
    
    	}
    
    	/**
    	 * 
    	 * @Title: commonStep2
    	 * @Description: 公共流程2
    	 */
    	private void commonStep2() {
    
    	}
    
    	/**
    	 * 
    	 * @Title: independentStep
    	 * @Description: 独立流程,需要子类去实现
    	 */
    	public abstract void independentStep();
    }
    

      子类ChildClassOne,提供独立流程的实现

    /**
      * @Title: ChildClassOne.java  
      * @Package template  
      * @Description: 子流程,提供独立流程的实现方式  
      * @version V1.0
     */
    public class ChildClassOne extends ParentClass {
    
    	@Override
    	public void independentStep() {
    		System.out.println("独立流程的第一种实现方案");
    	}
    }
    

    4、讨论

      上述的实现方式可以进一步修改为

    1. ParentInterface,父接口。
    2. ParentClass,实现ParentInterface,还是抽象类。
    3. ChildClassOne:继承ParentClass,提供独立流程的实现方式。

      模板模式中核心是流程的制定,公共流程和独立流程的分离。其中流程规范和公共流程是不允许修改的。

    5、示例

    Servlet的生命周期。

  • 相关阅读:
    H.265网页播放器EasyPlayer获取视频流正常,但是播放出现黑屏是什么原因?
    sql server设置允许远程连接的方法
    SQL Server 添加、修改和删除表格字段
    IDEA设置编辑器主题
    Idea中如何查看项目配置
    IDEA常用快捷键
    SQL Server : 18456报错
    SQL Server : 排序规则冲突collate Chinese_PRC_90_CI_AI
    excel表格如何设置下拉选项
    EXCEL插入图片批注
  • 原文地址:https://www.cnblogs.com/rain144576/p/9940868.html
Copyright © 2020-2023  润新知