设计模式之Template

模板方法设计模式

 

定义一个操作中算法的骨架,将一些步骤的执行延迟到其子类中。

父类方法中间的某段代码不确定,留给子类干,就用模板方法设计模式。

 

使用Java的抽象类时,就经常会使用到Template模式,因此Template模式使用很普遍.而且很容易理解和使用。

 

一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。

各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。其实这可以说是一种好的编码习惯了。

如果你不愿子类来修改你的模板方法定义的框架,你可以采用两种方式来做:

1、可以在API中不体现出你的模板方法;

2、可以将你的模板方法置为final就可以了。

demo:

父类:

public abstract class BenchMark {
	public final long repeat(int count){
		long time = 0;
		if(count < 0){
			return 0;
		}else {
			long startTime = System.currentTimeMillis();
			for(int i =0; i<count;i++){
				method();
			}
			long endTime = System.currentTimeMillis();
			time = endTime - startTime;
		}
		return time;
	}
	public abstract void method();
}

 子类:

public class BenchMarkMethod extends BenchMark{

	@Override
	public void method() {

		try {
			Thread.sleep(2000);
			System.out.println("sleep for 2s");
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	public static void main(String[] args) {
		BenchMark bench = new BenchMarkMethod();
		long time = bench.repeat(3);
		System.out.println(time);
	}/**OutPrint:
	 * sleep for 2s
	 * sleep for 2s
     * sleep for 2s
     * 6000
	 */
}

 

使用模板方法模式可以将代码的公共行为提取出来,达到复用的目的。而且,在模板方法模式中,是由父类的模板方法来控制子类中的具体实现。这样你在实现子类的时候,根本不需要对业务流程有太多的了解。

 

 

参考:http://wenku.baidu.com/view/b3084581d4d8d15abe234e0e.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值