2012-09-20 38 views
0

我有,我想在我能有一個理想的方案一個共同的問題,例如,許多類從繼承:最佳實踐有效

IThingImporter

...以及許多繼承自

IThingExporter的類。

也許我可以有具體的課程,如XmlThingImporter和SQLThingExporter,從而可以從XML文件導入數據並將其導出到一個SQL數據庫。我應該能夠用任何其他具體的實施來取代進口商或出口商,並讓事情「發揮作用」。

的問題是,我發現,它往往更有效的,如果進口商有出口商的實施知識。如果XML導入程序知道它正在寫入SQL數據庫,則可能會考慮到某些因素,例如批量插入效率更高。在其他情況下,我可能能夠避免讓導入器在導出之前將所有導入的數據存儲在內存中(並且如果它是大量數據,這可能是件好事)。

是否有任何創建其中工程無論一個通用的解決方案,或處理其中的進口商和出口商之間需要親密熟悉情況的任何已知的最佳實踐?

+0

你最終結果是什麼? – rboarman

回答

1

這看起來像一個生產者/消費者系統給我。您可以讓生產者(導入者)在一個或多個線程中運行,並將他們的消息放入一個隊列中,並讓導出者在一個或多個其他線程中運行,並從隊列中獲取消息。

一批出口國可以從隊列中檢索100條消息(或者等待一個給定超時)實際寫入數據庫之前。 「即時」出口商可以從隊列中收回消息並立即將其導出。

隊列可以有界的,防止進口商過多消息存儲在隊列中,從而避免存儲器發生問題的。

你會發現你需要實現在java.util.concurrent包這樣的事情的一切。

+0

這給了我很多想法,謝謝。我正在使用.NET,但我確定同樣的策略適用。 – vargonian