Item 19: Use Static Data Members with Caution小心使用静态数据成员
对于非泛型类来说,静态数据成员被所有该类的对象所共享。然而,对于泛型类型,静态数据成员是被所有拥有相同类型参数的类型所共享。
如:
public class StaticData<T>
{
private static int _staticData = 0;
public void IncrementCount()
{
_staticData++;
}
}
通过下面的方法来测试:
public void TestStaticData()
{
StaticData<String> instance1 = new StaticData<String>();
instance1.IncrementCount(); // 1
StaticData<int> instance2 = new StaticData<int>();
instance2.IncrementCount(); // 1
StaticData<String> instance3 = new StaticData<String>();
instance3.IncrementCount(); // 2
}
请注意注释中标注的数字。instance1和instance3共享同一个静态数据成员_staticData。
Item 20: Use Interfaces in Lieu of Classes使用接口取代类
原理不讲了,所有OOP人员都应该明白的。