Home > Java > javaTutorial > Detailed explanation of how to implement template method (TemplateMethod) pattern in Java

Detailed explanation of how to implement template method (TemplateMethod) pattern in Java

黄舟
Release: 2017-03-11 11:07:57
Original
1429 people have browsed it

Class diagram



##

/**
 * 业务流程模板,提供基本框架
 * @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();
	}
}
Copy after login


/**
 * 模板实现方式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");
	}

}
Copy after login


/**
 * 模板实现方式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");
	}
	
}
Copy after login


/**
 * 模板方法(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();
	}
}
Copy after login

Print

模板方法1
模板方法2
模板方法3

模板方法11
模板方法22
模板方法33
Copy after login

The above is the detailed content of Detailed explanation of how to implement template method (TemplateMethod) pattern in Java. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template