请不要将template方法写为虚方法,因为这将给最终用户修改template方法的能力从而改变了整个框架的基础。也就是说这仅是框架开发都需要完成的任务,最终用户要做的就是从框架基类继承并重写这些在框架中定义的抽象类以实现自己定制的功能。
尽管Main()函数与这些重写的函授放在一个类中是可行的,但最好是放在一个单独的类中。下面是全部的代码.
[@more@]
// 从基类继承 class MyClass : AppFramework { // 将抽象方法重写以实现定制的功能 override public void init() { Console.WriteLine("MyClass::init"); } override public void run() { Console.WriteLine("MyClass::run"); } override public void destroy() { Console.WriteLine("MyClass::destroy"); } // the main method defined public static void Main(String [] arg) { MyClass myClass = new MyClass(); } } |
尽管Main()函数与这些重写的函授放在一个类中是可行的,但最好是放在一个单独的类中。下面是全部的代码.
<code> 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 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(); } } <code> |
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/79548/viewspace-926561/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/79548/viewspace-926561/