package com.javaxxz.test;public class Template { /* 模板模式:解决某类事情的步骤有些是固定的,有些是会发生变化的, 那么这时候我们可以为这类事情提供一个模板代码,从而提高效率。 需求:编写一个计算程序运行时间的模板 模板模式的步骤: 1、先写出解决该类事情其中的一件的解决方案 */ public static void main(String[] args) { MyRuntime myRuntime = new MyRuntime(); myRuntime.getTime(); }}class MyRuntime { public void getTime(){ long startTime = System.currentTimeMillis(); for (int i = 0; i < 100; i++) { System.out.println("i =" + i); } long endTime = System.currentTimeMillis(); System.out.println("运行时间 : " + (endTime - startTime)); }}
-------------------------------------------------------------------------------------------------------------
abstract class MyRuntime { public void getTime(){ long startTime = System.currentTimeMillis(); // 2、分析代码,把会发生变化的代码抽取出来独立成一个方法。把该方法描述成一个抽象的方法。 code(); long endTime = System.currentTimeMillis(); System.out.println("运行时间 : " + (endTime - startTime)); } public abstract void code(); }}
------------------------------------------------------------------------------------------------------------
package com.javaxxz.test;public class Template extends MyRuntime{ /* 模板模式:解决某类事情的步骤有些是固定的,有些是会发生变化的, 那么这时候我们可以为这类事情提供一个模板代码,从而提高效率。 需求:编写一个计算程序运行时间的模板 模板模式的步骤: 1、先写出解决该类事情其中的一件的解决方案 2、分析代码,把会发生变化的代码抽取出来独立成一个方法。把该方法描述成一个抽象的方法。 3、使用final修饰模板方法,防止别人重写你的模板方法。 */ public static void main(String[] args) { Template template = new Template(); template.getTime(); } @Override public void code() { for (int i = 0; i < 100; i++) { System.out.println("i =" + i); } }}abstract class MyRuntime { // 3、使用final修饰模板方法,防止别人重写你的模板方法。 public final void getTime(){ long startTime = System.currentTimeMillis(); // 2、分析代码,把会发生变化的代码抽取出来独立成一个方法。把该方法描述成一个抽象的方法。 code(); long endTime = System.currentTimeMillis(); System.out.println("运行时间 : " + (endTime - startTime)); } public abstract void code();}