// ********** TemplateDemo.java ********** abstract class AbstractClass { public void templateMethod() { primitiveOperation1(); primitiveOperation2(); } protected abstract void primitiveOperation1(); protected abstract void primitiveOperation2(); } class ConcreteClass1 extends AbstractClass { protected void primitiveOperation1() {} protected void primitiveOperation2() {} } class ConcreteClass2 extends AbstractClass { protected void primitiveOperation1() {} protected void primitiveOperation2() {} } class TemplateDemo { private static final int MAX = 2000; public static void main(String args[]) { long t1 = System.currentTimeMillis(); for (int i=0; i