程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> 基於.NET的職責鏈模式類庫——NChain

基於.NET的職責鏈模式類庫——NChain

編輯:關於.NET

Chain.NET(又名NChain)是職責鏈模式在.NET和Mono平台上的一個實現。它的0.1版本(已可以在SourceForge中訪問)結合了標准的職責鏈模式以及命令模式,目的是“為基於命令處理的功能提供一個方便而又靈活的解決方案”。

NChain松散地基於Java平台上的Jakarta的Commons Chain包。一般說來,職責鏈模式從一系列處理單元中分解出命令對象從而解耦。每個處理單元均包含相應的代碼,以描述它可接受的命令對象的類型;另外它還會委托部分責任,用來處理與職責鏈上下一個處理單元不相匹配的對象。

以下是一個簡單的職責鏈模式的示例:

using System;
using System.Collections;
namespace Chain_of_responsibility
{
    public interface IChain
    {
        bool Process(object command);
    }
    public class Chain
    {
        private ArrayList _list;
        public ArrayList List
        {
            get
            {
                return _list;
            }
        }
        public Chain()
        {
            _list = new ArrayList();
        }
        public void Message(object command)
        {
            foreach ( IChain item in _list )
            {
                bool result = item.Process(command);
                if ( result == true ) break;
            }
        }
        public void Add(IChain handler)
        {
            List.Add(handler);
        }
    }
    public class StringHandler : IChain
    {
        public bool Process(object command)
        {
            if ( command is string )
            {
                Console.WriteLine("StringHandler can handle this message
: {0}",(string)command);
                return true;
            }
            return false;
        }
    }
    public class IntegerHandler : IChain
    {
        public bool Process(object command)
        {
            if ( command is int )
            {
                Console.WriteLine("IntegerHandler can handle this message
: {0}",(int)command);
                return true;
            }
            return false;
        }
    }

    class TestMain
    {
        static void Main(string[] args)
        {
            Chain chain = new Chain();
            chain.Add(new StringHandler());
            chain.Add(new IntegerHandler());
            chain.Message("1st string value");
            chain.Message(100);
        }
    }
}

NChain提供了一個比較類似,但更為強壯的架構。

NChain需要更進一步的測試以及性能監控,來確定它到底是否適用於企業應用架構。這是個開源項目,並且提供了有用的入門示例可供快速入門。目前看來,在各種考慮使用命令模式,並且需要根據上下文來執行不同類型命令的場景下,NChain都會有一定用武之地。

英文原文:.NET Chain of Responsibility Library

http://www.infoq.com/news/2008/09/nchain

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved