电の岁月---点滴记忆
交流,分享,进步

实现Singleton的三个要点:
1.私有化构造函数
2.保存实例的静态私有变量
3.访问这个实例的公共静态方法

 

public class CSingleton
{
private static CSingleton mySingleton = null;

private CSingleton()
{

}

public static CSingleton Instance()
{
if (mySingleton == null)
mySingleton
= new CSingleton();
return mySingleton;
}

public void Do()
{
//Do something
}
}

 

Client端使用:
      CSingleton.Instance().Do();

 

例子:单窗口模式

之前:

 

//单击按钮事件
private void button1_Click(object sender, EventArgs e)
{
Form2 f2
= new Form2();
f2.Show();
}

 

结果是每单击一次按钮弹出Form2的一次窗口,可以弹出无限次的窗口...

 

之后:

 

namespace singleton
{
public partial class Form2 : Form
{
private static Form2 _f2;//定义静态对象
private Form2()//改为私有函数
{
InitializeComponent();
}
public static Form2 getf2()//定义静态方法
{
if(_f2==null)
_f2
=new Form2();
return _f2;
}
   
//添加窗口关闭事件,以保证窗口关闭后可以手动的释放对象,下一次点击同样生效
private void Form2_FormClosed(object sender, FormClosedEventArgs e)
{
_f2
= null;//静态成员_f2有全局性
}
}
}

在Form1中的点击按钮事件中

 

private void button1_Click(object sender, EventArgs e)
{
Form2.getf2().Show();
}

 

这样得到的结果是无论如何点击按钮,产生的都只是一个对话框.

posted on 2010-08-11 20:24  doucontorl  阅读(183)  评论(0编辑  收藏  举报