例如,如果我有一个课:
public class StuffHolder
{
List<Stuff> myList;
public StuffHolder()
{
myList = newList<Stuff>();
myList.Add(new Stuff(myList));
myList[0].stuffHappens();
}
}
和一个东西对象:
public class Stuff
{
List<Stuff> myList;
public Stuff(List<Stuff> myList)
{
this.myList = myList;
}
public void stuffHappens()
{
myList.Remove(this);
}
}
调用stuffHappens()而不是让内容将应将其删除的信息传递给StuffHolder类,并让StuffHolder类删除特定的Stuff有什么缺点?
最佳答案
如果stuffHappens()一次出现在多个线程中,则存在危险,因为List<T>
集合不是线程安全的。
更大的危害是责任的混淆,因为Stuff知道将其存储在集合中可能不是工作。随着系统的成长和发展,这种设计的“模糊性”会不断增加混乱。