模板模式

简介:在模板模式中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。

主要解决:一些方法通用,却在每一个子类都重新写了这一方法。

注意:一般模板方法都加上 final 关键词。

下面的例子是关于计算代码执行时间的。如果程序中多处需要计算代码的执行时间,那么可以将这个功能抽象出来。

/**
 * 定义一个模板类,用于计算代码的执行时间
 * @author admin
 *
 */
public abstract class Code {
	public abstract void run();
	
	/**
	 * 模板类
	 */
	final public long getRunTime(){
		Long startTime=System.currentTimeMillis();
		System.err.println("开始时间是"+startTime);
		run();
		Long endTime=System.currentTimeMillis();
		System.err.println("结束时间是"+endTime);
		long time=(endTime-startTime)/1000;
		System.err.println(""+time);
		return time;
	}

}

/**
 *继承模板类,重写抽象方法。
 */
class Calculating extends Code{

	@Override
	public void run() {
		
		try {
			Thread.sleep(5000);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

主方法:

public class Main {

	public static void main(String[] args) {
		synchronized (args) {
			Code calculating=new Calculating();
			long time=calculating.getRunTime();
			System.err.println("运行时间是"+time);
		}
	}
}
运行结果:
开始时间是1526350196628
结束时间是1526350201628
5
运行时间是5

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值