Design Patterns: Solidify Your C# Application Arch

來源:互聯網
上載者:User
 Design Patterns: Solidify Your C# Application Architecture with Design Patterns中文版(中篇)    optimizer(翻譯)

關鍵字     設計模式 singleton strategy decorator composite state

出處     http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnmag01/html/PATTERNS.asp

Design Patterns: Solidify Your C# Application Architecture with Design Patterns中文版(中篇)
作者:Samir Bajaj
譯者:榮耀
【譯序:C#進階文章。譯者對Samir提供的C#例子進行了簡單整理(作者提供的某些代碼在譯者的環境中無法通過編譯),並編寫了對應的C++樣本,一併置於譯註中,以便讀者比對。譯文中所有C#、C++程式調試環境均為Microsoft Visual Studio.NET 7.0 Beta2】
decorator
     客戶應用常常需要加強某些類的方法所提供的服務。可能需要分別在方法調用前後插入一些預先處理和後繼處理的代碼。要實現這個目標,一種辦法是乾脆做成不同的方法調用。然而,這種方式不但麻煩,而且不利於架構的擴充。例如,如果對於不同的客戶來說明顯要執行不同的預先處理和後繼處理任務,應用程式邏輯將會因為條件陳述式而變得晦澀不清並難以維護。問題是如何才能增強類所提供的功能的同時又不影響客戶代碼,而Decorator模式正是所需。
     讓我們來考察一個具有遠程檔案傳輸功能的類的例子。這樣的類代碼可能如表5所示。
表5
class FileTransfer
{
    public virtual void Download(string url, byte[] data, int size)
    {
        // 下載檔案
    }
    public virtual void Upload(string url, byte[] data, int size)
    {
        // 上傳檔案
    }
}
         假定有一個客戶程式對這個功能感興趣。除了能夠上傳和下載檔案外,客戶應用還希望能夠將所有的檔案傳輸請求和執行訪問檢查寫入日誌。基於decorator模式的一種實現方式是從FileTransfer類派生出一個類並重載虛方法,並於調用基類方法之前或之後,插入附加代碼。如表6所示。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.