我有以下類:設計最佳實踐 - 對象應該擁有傳遞給它的構造函數的東西嗎?
public class SqlCeEventStore: EventStore
{
private EventStoreDB db;
public SqlCeEventStore(EventStoreDB db)
{
this.db = db;
}
public void Dispose()
{
db.Dispose();
}
}
我的問題是這樣的:我在我班上的Dispose
方法處置有關EventStoreDB
糾正,因爲它傳遞給它的構造函數(因此,可能可以想像,在我的課程被處理後重用)?
也就是說,如果我處理它,我授權,我班的正確用法是:
using (var store = new SqlCeEventStore(new EventStoreDB)){
{
//...
}
但我可以看到使用這種替代電話:
using (var db = new EventStoreDB())
using (var store = new SqlCeEventStore(db))
{
//...
}
在這種情況下,我應該不是從SqlCeEventStore
類處置EventStoreDB
。
對於一種風格或其他風格是否有任何爭論?我想選擇一個並堅持下去,我寧願不要翻轉一個硬幣:)
啊......謝謝,我必須承認,「構圖vs聚合」的區別對我來說從來不清楚 –
@ Marcel:是的,這是一個難以理解的棘手的定義,你的情況就是看到它的方式,順便說一句,現在很清楚了;) – Nrj
是的,它是:)我將這個標記爲公認的答案。 –