Design Pattern Java Tutorial

abstract class ApplicationFramework {
  public ApplicationFramework() {
    templateMethod(); // Dangerous!
  }
  abstract void customize1();
  abstract void customize2();
  final void templateMethod() {
    for (int i = 0; i < 5; i++) {
      customize1();
      customize2();
    }
  }
}
class MyApp extends ApplicationFramework {
  void customize1() {
    System.out.print("Hello ");
  }
  void customize2() {
    System.out.println("World!");
  }
}
public class TemplateMethod {
  public static void main(String args[]) {
    MyApp app = new MyApp();
  }
}