首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

用 C# 開發應用程式框架:Template Method 模式實作

     編輯:關於C語言

前言

框架為定製化通用應用程式開發基礎軟體,基於此可開發功能完善軟體。近年成功實現特定領域開發框架(使用者介面、資料存取等)。成功開發框架意謂開發不再從頭開始:能生成使用者介面的框架,也能生成任意介面。Java Applets/Servlets 即框架平台範例,微軟 MFC、.NET Framework 同屬此類。

先決條件與工具

  • 讀者需有 C# 經驗或 Java Applet/Servlet 基礎了解。
  • 代碼在 Windows 2000+ .NET Framework 釋出版測試。無圖形介面需求,使用寫字板與 C# 命令列編譯器。

核心:Template Method 模式

開發應用框架核心為 template 方法,隱藏於應用程式內控制執行流程。僅在基底類別實現且不可被改變。

步驟一:建構框架基底類別

基底類別為框架最重要類別,包含可被重寫方法供最終使用者實現自訂功能,以及控制流程的 template 方法。框架包含三個需使用者實現的抽象方法:init、run、destroy,必須順序執行。

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");
    }
}

關鍵:templateMethod 不可寫為 virtual,否則賦予使用者修改框架基礎能力。使用者僅需繼承基底類別並重寫抽象方法實現定製功能。

步驟二:使用者實現具體類別

class MyClass : AppFramework
{
    public override void init() { Console.WriteLine("MyClass::init"); }
    public override void run() { Console.WriteLine("MyClass::run"); }
    public override void destroy() { Console.WriteLine("MyClass::destroy"); }

    public static void Main(string[] arg)
    {
        MyClass myClass = new MyClass(); // 建構時自動執行 template 流程
    }
}

雖 Main() 可與重寫方法同類別,但最好分離獨立類別。

完整代碼整理

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
{
    public override void init() { Console.WriteLine("MyClass::init"); }
    public override void run() { Console.WriteLine("MyClass::run"); }
    public override void destroy() { Console.WriteLine("MyClass::destroy"); }
    public static void Main(string[] arg) { MyClass myClass = new MyClass(); }
}

此框架展示 Template Method 設計模式在 C# 中的經典應用,為應用程式提供固定執行骨架,延伸點由子類別實現。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved