关闭。这个问题是opinion-based .它目前不接受答案。
想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题.
2年前关闭。
Improve this question
我有以下类(class):
public class SqlCeEventStore: EventStore
{
private EventStoreDB db;
public SqlCeEventStore(EventStoreDB db)
{
this.db = db;
}
public void Dispose()
{
db.Dispose();
}
}
我的问题是:我处理
EventStoreDB
是否正确?在 Dispose
我的类的方法,因为它是在构造函数中传递给它的(因此,可以想象在我的类被处理后可以重用)?也就是说,如果我处理它,我会要求我的类的正确用法是:
using (var store = new SqlCeEventStore(new EventStoreDB)){
{
//...
}
但我可以看到正在使用这个替代调用:
using (var db = new EventStoreDB())
using (var store = new SqlCeEventStore(db))
{
//...
}
在这种情况下,我不应该处理
EventStoreDB
来自 SqlCeEventStore
类(class)。对一种风格或另一种风格有任何争论吗?我想选择一个并坚持下去,我宁愿不抛硬币:)
最佳答案
一般来说,这没有规则,但是我同意,因为对象是在您的范围之外创建并传递给您的,所以您不拥有它。
如果你已经创建了它,那么你应该拥有做任何你喜欢做的事情的所有权利(记录调用者的预期行为)
这是经典composition vs aggregation东西。
关于oop - 设计最佳实践 - 对象是否应该拥有传递给其构造函数的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7537425/