JAVA模板方法设计模式(TemplateMethod)

模板方法设计模式(TemplateMethod)

抽象类体现的就是一种模板模式的设计,抽象类作为多个子类的通用模板,子类在抽象类的基础上进行扩展,改造,但子类总体上会保留抽象类的行为方式。
解决的问题:

  • 当功能内部一部分实现是确定,一部分实现是不确定的,这时候可以把不确定的暴露出去,让子类去实现。
  • 编写一个抽象父类,父类提供了多个子类的通用方法,并把一个或多个方法留给子类实现,就是一种模板模式。

具体实现:

package com.zjx.abs;
/**
 * 模板方法设计模式
 * 模板类:抽象父类
 * 		 1.	实现好的方法(普通方法)
 * 		 2. 没实现的方法(抽象方法)
 * 应用类:普通之类
 * 		 1. 实现好的方法不用改造
 * 		 2. 实现父类抽象方法(改造)
 * @author zjx
 *
 */
public class TestTemplate {
	public static void main(String[] args) {
		//创建对象
		Template template  = new Son();
		//调用模板方法 自动调用code 并且计算耗时
		template.caleTimes();
	}
}
//抽象模板父类
abstract class Template{
	/**
	 * 计算代码的耗时时间
	 */
	public void caleTimes(){
		//记录代码执行前距离1970-1-1 0:0:0 的时间差
		long start = System.currentTimeMillis();
		
		//具体执行的代码
		code();
		
		//代码执行后距离1970-1-1 0:0:0 的时间差
		long end = System.currentTimeMillis();
		//返回结果
		System.out.println("code耗时:"+(end-start));
	}
	//具体执行的代码由子类实现
	public abstract void code();
}
//具体实现应用类
class Son extends Template{
	//子类实现父类的code方法
	@Override
	public void code() {
		int sum = 0;
		//循环1000万次求和
		for (int i = 0; i < 10000000; i++) {
			sum += i;
		}
	}
	
}
发布了18 篇原创文章 · 获赞 2 · 访问量 1475

猜你喜欢

转载自blog.csdn.net/AppWhite_Star/article/details/104645995