優惠試圖提供的ConcurrentQueue<T>
單位可測試(使用MOQ)抽象我辯論我是否失去了使用框架的ConcurrentQueue<T>
實現取決於我如何創作抽象的好處。繼承或包裹一類併發
什麼是做一個或另一個在下面的代碼清單的影響:
public abstract class MyMessageQueue1<T> : ConcurrentQueue<T>
{
public new virtual void Enqueue(T item)
{
base.Enqueue(item);
}
}
public class MyMessageQueue2<T>
{
private readonly ConcurrentQueue<T> _concurrentQueue =
new ConcurrentQueue<T>();
public virtual void Enqueue(T item)
{
_concurrentQueue.Enqueue(item);
}
}
在首次執行(MyMessageQueue1
),我隱藏任何的基類的方法來傳遞前提供我的實現對基類的調用。
在第二個執行,我包裹ConcurrentQueue<T>
裏面,當我需要傳遞給它的調用。
MyMessageQueue2
是否必須手動處理併發或不重要,因爲所有調用都傳遞給包裝的ConcurrentQueue<T>
。
爲什麼你真的這樣做,你想達到什麼目的? –
+1結束成爲一個好問題@TrevorPilley – leon