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
}

解决方案 »

  1.   

    lz可参考一个"单件模式"的设计思想,一个类Class只有一个实例存在,有多种实现方式
      

  2.   

    面向对象 工厂模式 可能会用到反射调用 如果调用频繁 用静态声明执行效率较高(不用每次都实例化)
    参考"petshop 讲解" 
    百度一下有很多
      

  3.   

    怎样的责任分离呢?
    为什么要通过一个内嵌类来创建呢?
    而这样的一个类是应该放到BLL层中吗?我代码上面的成员类写错了,应该是成员变量还有最主要的是,如果我想把他的成员变量分离成一个MOdel(例如 MyInfo,还有其操作DAL及接口IDAL),而初始化操作(BLL)保留到这个类,我应该怎样修改呢?或者说是不是分离了不好呢?
      

  4.   

    其实我主要的目的是想把这个类进行分层,因为原来的类中,定义了这个类的成员,以及对这个类成员操作的函数(某些还含有数据库的操作),但是如果把这个类分开成三层,那是不是在每一层中的类(例如MyInfo,MyInfoDAL,MyInfoFactory,MyInfoDLL)都要设计成 单体模式 呢?
      

  5.   

    保证一个类仅有一个实例,并提供一个访问它的全局访问点。单件模式参考:http://terrylee.cnblogs.com/archive/2005/12/09/293509.html
      

  6.   

    乱说的人真多.也不会去查一下资料...
    答案是:
    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. 
      

  7.   

    http://blog.joycode.com/ghj/archive/2004/08/24/31512.aspx
    [整理]单件模式(Singleton)的延迟初始化(Lazy Initialization)和(Early initialization) 
      

  8.   


    http://en.wikipedia.org/wiki/Singleton_pattern 谢谢[Allen_Chen_],这个就是我要的答案。