public class MyFactory
{ #region 成员类
……
#endregion public void Initialize()
{
……
} …… #region 获取工厂实例
public static MyFactory GetFactory()
{
return Nested.instance;
}
class Nested
{
static Nested(){}
internal static readonly MyFactory instance = new MyFactory();
} #endregion
}可不可以帮我解释一下上面这个类?为什么他不使用以下方式实现呢?public class MyFactory
{ private static readonly MyFactory instance = new MyFactory(); #region 成员类
……
#endregion public void Initialize()
{
……
} …… #region 获取工厂实例
public static MyFactory GetFactory()
{
return instance;
}
#endregion
}
参考"petshop 讲解"
百度一下有很多
为什么要通过一个内嵌类来创建呢?
而这样的一个类是应该放到BLL层中吗?我代码上面的成员类写错了,应该是成员变量还有最主要的是,如果我想把他的成员变量分离成一个MOdel(例如 MyInfo,还有其操作DAL及接口IDAL),而初始化操作(BLL)保留到这个类,我应该怎样修改呢?或者说是不是分离了不好呢?
答案是:
lazy initialization.
参见:
http://en.wikipedia.org/wiki/Singleton_pattern
注意这句:
/// An instance of Singleton wont be created until the very first
/// call to the sealed class. This is a CLR optimization that ensures that
/// we have a properly lazy-loading singleton.
[整理]单件模式(Singleton)的延迟初始化(Lazy Initialization)和(Early initialization)
http://en.wikipedia.org/wiki/Singleton_pattern 谢谢[Allen_Chen_],这个就是我要的答案。