public class FormMain
{
        private static FormMain frm_Main;
public static FormMain creatNewForm ()
{
if (FormMain.frm_Main == null)
{
                FormMain.frm_Main = new FormMain(); 
}
return FormMain.frm_Main;
}
        .............................
//其它成员
     public void FormMain fun()
{
...........
}
}声明:FormMain f=FormMain.creatNewForm();
方法2:public class FormMain
{
  
     public void FormMain fun()
{
...........
}
}
FormMain f=new FormMain();看到有人用上面的方法,实在有点不明白,为什么要那样?第二种不是简单又是一样的效果吗?有什么异同吗?

解决方案 »

  1.   

    第一种方法,你没有看过设计模式,属于singelton,单例模式!控制了程序中只有一个该类对象!
    第二个是通常不做控制的声明方法!
      

  2.   

    建议你有空看看设计模式!

    大话设计模式
    http://product.dangdang.com/product.aspx?product_id=20079096&ref=search-1-A
    下载地址:
    http://topic.csdn.net/u/20100405/15/b887d3de-2f4f-4386-8ef7-ee0993067383.html?57419
      

  3.   

    第一种方法是通过当前FormMain.creatNewForm()方法把当前实例的对象返回给f对象
    第二种方法是重新实例化一个FormMain对象给f对象
      

  4.   

    public class FormMain
    {
      private static FormMain frm_Main;
    public static FormMain creatNewForm ()
    {
    if (FormMain.frm_Main == null)
    {
      FormMain.frm_Main = new FormMain();  
    }
    return FormMain.frm_Main;
    }作用在于,
    你在窗体1:FormMain f=FormMain.creatNewForm();
    和在窗体2:FormMain f=FormMain.creatNewForm();
    都是同一个对象。单例模式有点像:你到不同的ATM取款,无论你在哪里取款,永远都是从同一个“银行的库存”里扣的。