using System; abstract class AppFramework { public AppFramework() { templateMethod(); } public abstract void init(); public abstract void run(); public abstract void destroy(); private void templateMethod() { Console.WriteLine("Initializing Template Engine"); init(); run(); destroy(); Console.WriteLine("Ending Template Engine"); } } class MyClass : AppFramework { override public void templateMethod() { Method3(); } public void Method3() { Console.WriteLine("MyClass::Method3"); } override public void init() { Console.WriteLine("MyClass::init"); } override public void run() { Console.WriteLine("MyClass::run"); } override public void destroy() { Console.WriteLine("MyClass::destroy"); } public static void Main(String [] arg) { MyClass myClass = new MyClass(); } }