2017-01-07 66 views
0

我在我的應用程序/程序中使用了以下模式/樣式,並且想知道這是否是我不知道的常見模式。這是一種常見的設計模式嗎?

當我必須編寫一個應用程序,它像是一個可以從不同來源獲取輸入數據的大功能的應用程序,請執行處理並創建輸出。像IPO模型(輸入過程輸出)一樣。

我有一個類/類型只代表我的狀態/數據沒有邏輯。大多數時候我將它命名爲Context,ExecutionContext或RuntimeContext。我也有多個只包含邏輯的類/類型作爲無狀態函數(在靜態類中的C#靜態方法中)。在我的應用程序入口點後,我首先創建上下文,然後將其用作我函數的參數。上下文保存應用程序的complate狀態/數據,並且所有靜態函數/方法都處理上下文。在函數鏈的最後,調用/執行完成,並且如果我需要outputdata,上下文將保持最終狀態。

我嘗試創建可視化這些方法

enter image description here

這些模式的優點是圖片

  1. 我可以簡單的測試,我的邏輯(小件的靜態函數)與 unittest
  2. 它不是很難使用併發代碼(只有上下文需要線程安全代碼)
  3. 與其他系統的依賴關係大多與上下文中的抽象(接口)分離(例如,IDbContext)。這使得更大範圍的測試變得簡單

這裏是我的問題。這是一種常見的模式嗎?如果是,它是如何被調用的?

感謝您的每一個提示! :)

問候

+5

你可能想把它帶到軟件工程交換中。 – pvg

+2

你能用示例代碼來支持你的圖嗎?你的圖不會像你在文本中描述的那樣顯示接口/類。 –

+0

可能最適合的將是我可以看到的抽象工廠或責任鏈。很多東西,但在這裏探索。 https://social.msdn.microsoft.com/Forums/en-US/af062e83-3e61-45d4-aeaa-d30b4366c6a2/the-23-gang-of-four-design-patterns-cheat-sheet?forum= architecturegeneral http://www.dotnettricks.com/learn/designpatterns/gang-of-four-gof-design-patterns-in-net – Netferret

回答

0

這看起來像一個Dataflow

這些功能是黑箱,它們對提供給它的數據起作用。數據流是完整的,甚至可以建模傳統的命令式流量控制結構。

+0

Thx的提示阿斯蒂。該鏈接可幫助我進行搜索 – user1481065

+0

@ user1481065我已經實現了一個具有必要屬性的完整數據流系統,以模擬控制流結構。給我留言,如果你想要更多的細節。 – Asti

0

當您發出到ASP.NET MVC的請求時,它有一個入口,並在年底返回的輸出。 ASP.NET MVC是開源的,有大量的圖解解釋了整個管道及其工作原理。它也是非常可定製的,因此開發人員可以插入他們自己的類,攔截某些事件,掛鉤到某些部分(過濾器,認證,授權等)。

如果我是你,我會開始研究並借鑑一些想法它。你不需要看源代碼。您可以先看看管道圖,看看它在做什麼以及它是如何做的。

現在你的代碼只是以串行方式執行的函數。如果你想使用面向對象,利用接口,並允許自定義,事件攔截,掛鉤等,那麼這將是困難的。

Here是您可能感興趣的圖表。

0

那麼,它在IoC風格的應用程序中很常見,其中服務/存儲庫是單例,因此是無狀態的。

這種方法的優點是它節省了大量的內存和一些時間(不需要生成組件的新實例)。缺點是,如果沒有強大的接口支持和IoC/Dependency Injection容器,你會以某種方式丟失OOP aproach,並且很難保存更大的圖像。

另請參見ThreadLocal<>機制內置到.NET中 - 這樣您就不需要顯式地傳遞上下文,而是訪問包含它的分層範圍的全局變量(但隨後 - 您需要注意何時分支線程,IoC/DI處理的另一個主題)。

相關問題