zoukankan      html  css  js  c++  java
  • Java 实现模板方法(TemplateMethod)模式

    类图


    /**
     * 业务流程模板。提供基本框架
     * @author stone
     *
     */
    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
     * @author stone
     *
     */
    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");
    	}
    	
    }

    /**
     * 模板方法(TemplateMethod)模式:行为型模式,定义了一系列操作的骨架,将模块的实现 延迟到实现类或者子类中实现。
     * 跟建造者模式的差别:
     * 		建造者模式。使用组合方式,由指挥者Director指挥组合的Builder建造。建造流程由Director控制。建造的模块方法由Builder实现
     * 		模板方法模式。由模板定义操作流程,由子类或实现类 实现详细的模块方法
     * 		综上。建造者模式灵活于模板方法模式
     * @author stone
     *
     */
    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
    


  • 相关阅读:
    好用的PHP读取EXCEL类
    PHP获取函数参数数组
    在 Win7 下运行 TC 2.0 / TC3.0 / BC 3.1 / QB 4.5 等 DOS 开发工具
    用PHP生成等比图像的方法
    判断当前发布日期是否超过今天
    HTTP响应代码中文详解
    __autoload自动加载函数
    __isset魔术方法
    php下载远程文件类(支持断点续传)
    用PHP保存从摄像头拍下来的图片
  • 原文地址:https://www.cnblogs.com/cxchanpin/p/6805647.html
Copyright © 2011-2022 走看看