class BaseActivity
{
public static BaseDevice m_BaseDevice = null;
public BaseActivity()
{
if (m_BaseDevice == null)
{
m_BaseDevice = new BaseDevice();
}
}
}
class BaseDevice
{
public BARService m_BarService = null;
public IDCService m_IDCService = null;
public PINService m_PinService = null;
public PRJService m_PrjService = null;
public PRRService m_PrrService = null;
public PRPServie m_PrpService = null;
public EDMService m_EdmService = null;
public MoService m_MoService = null;
public BaseDevice()
{
AppLog.Info("Enter BaseDevice()");
m_BarService = new BARService();
m_IDCService = new IDCService();
m_PinService = new PINService();
m_PrjService = new PRJService();
m_PrrService = new PRRService();
m_PrpService = new PRPServie();
m_EdmService = new EDMService();
m_MoService = new MoService();
}
}
其中BaseActivity为 N个Class的基类。程序加载时,一次性把N个Class 全部实例化。
就会出现BaseActivity 的构造被执行N遍。
问题1:以上代码是不是避免了BaseDevice中的类被初始化N遍?
问题2:这样的写法有什么不妥?
------解决思路----------------------
不会重复构造
静态字段只会在静态构造函数中初始化一次。你这么写没有必要
------解决思路----------------------
除了不能在多个线程里实例化,没什么问题
------解决思路----------------------
1、你都公开了构造函数,还有什么不重复创建的?你只是在构造函数里面判断了是否存在静态的基础类,但如果在并发情况下,还是会出现new多次
2、这样的写法哪里不妥,问题大了,真心就看不懂你为啥要static一个基类,而这个类还有好多子类?