模版模式java

模版模式:
第一种角色:抽象模版

  1. 第一种方法需要子类去实现,并且必须实现;
  2. 第二个扩展方法,是一个空方法,子类可以去复写,也可以不去复写
  3. 第三个私有的最终方法,不能复写
  4. 第四个模版方法,这个方法中定义了每个方法的执行顺序和逻辑
  5. 第二种角色:具体模版要继承抽象模版,需要实现抽象模版中的抽象方法,可以扩展抽象模版中的扩展方法
以计算一个方法的运行时间为例子
/**
 * 抽象模版
 * @author Administrator
 *
 */
abstract class CalTimeAbsTemplate_02{
	/**
	 * 必须要实现的业务方法
	 */
	public abstract void doJob();

	/**
	 * 扩展方法:可以重写也可以不重写
	 */
	public void hookMethod() {

	}

	/**
	 * 最终方法:必须不能被重写
	 */
	public final long concrateMethod() {
		long current=System.currentTimeMillis();
		return current;
	}

	/**
	 * 模版方法,供其他类使用
	 */
	public void templateMethod() {
		long startTime=concrateMethod();
		doJob();
		long endTime=concrateMethod();
		long sumTime=endTime-startTime;
		System.out.println("程序一共运行"+sumTime+"ms");
	}
}
/**
 * 具体模版,实现具体的业务流程
 * @author Administrator
 */
class ConcrateTemplate_02 extends CalTimeAbsTemplate_02{
	public void doJob() {
		for(int i=1;i<=1000;i++) {
			System.out.println("程序运行:"+i+"%");
		}
	}
}
public class TemplateText_02 {

	public static void main(String[] args) {
		ConcrateTemplate_02 ct=new ConcrateTemplate_02(); 
		ct.templateMethod();
	}
}
发布了36 篇原创文章 · 获赞 50 · 访问量 9768

猜你喜欢

转载自blog.csdn.net/qq_41765969/article/details/89407934