我有以下类:设计最佳实践 - 对象应该拥有传递给它的构造函数的东西吗?
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
是的,它是:)我将这个标记为公认的答案。 –