例如,如果我有一个课:

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知道将其存储在集合中可能不是工作。随着系统的成长和发展,这种设计的“模糊性”会不断增加混乱。

10-07 19:47
查看更多