如果我有兩個程序集,一個只包含業務規則(程序集A),另一個作爲外部依賴項(如文件系統,數據庫,Web服務,等等(組件B),應該是參考B還是應該B參考A?所有內部程序集與具有外部依賴關係的程序集
例如:
如果我有一個SourceCodeInterpreter類(組件A),應將其實例化一個SourceCodeFileReader(在組件B)在數據讀取,或應在SourceCodeFileReader讀取源後實例化一個SourceCodeInterpreter類文件,然後啓動解釋器?
如果我有兩個程序集,一個只包含業務規則(程序集A),另一個作爲外部依賴項(如文件系統,數據庫,Web服務,等等(組件B),應該是參考B還是應該B參考A?所有內部程序集與具有外部依賴關係的程序集
例如:
如果我有一個SourceCodeInterpreter類(組件A),應將其實例化一個SourceCodeFileReader(在組件B)在數據讀取,或應在SourceCodeFileReader讀取源後實例化一個SourceCodeInterpreter類文件,然後啓動解釋器?
這一切都取決於事情將如何使用。如果程序集使用另一個程序集中定義的類型,則需要對其進行引用。我儘量避免在程序集之間添加依賴關係,除非他們真的有存在的原因。
在你的例子中,我試着將兩個程序集分開。這兩個程序集最有可能被您的應用程序使用。您的應用程序可以同時參考,並且它們可以是獨立的。該應用程序將使用SourceCodeFileReader來讀取您的代碼,然後將其傳遞給您的SourceCodeInterpreter來解釋它。
但是,如果您試圖使這需要使用單一類型,我會將「頂級」程序集作爲包含對「低級細節」的引用的程序集。在這種情況下,這可能意味着解釋者會引用讀者 - 因爲讀者是較低層次的,並且是無用的。
我喜歡這一個。我認爲要讓主應用程序儘可能笨,簡單,它必須在單個類上調用單個方法,但使用兩個類/程序集並不多。通過這種方式更好地分離問題。謝謝! – 2009-04-30 16:43:59