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
    


  • 相关阅读:
    软件测试模型
    功能测试用例是怎么写
    Web测试需要注意的点
    WEB测试方法总结-笔记
    安全性测试的测试点
    删除功能测试的测试点
    压力测试的测试点
    异常测试的测试点
    解决Plugin org.apache.maven.plugins:maven-archetype-plugin:RELEASE or one of its dependencies...
    中国联通:本公司将继续在纽约证交所上市交易
  • 原文地址:https://www.cnblogs.com/cxchanpin/p/6805647.html
Copyright © 2011-2022 走看看