using System;
using System.Collections.Generic;
using System.Text;
namespace 单例模式
{
class Program
{
static void Main(string[] args)
{
Singleton s1 = Singleton.GetInstance();
Singleton s2 = Singleton.GetInstance();
if (s1 == s2)
{
Console.WriteLine("Objects are the same instance");
}
Console.Read();
}
}
class Singleton
{
private static Singleton instance;
private static readonly object syncRoot = new object();
private Singleton()
{
}
public static Singleton GetInstance()
{
if (instance == null)
{
lock (syncRoot)
{
if (instance == null)
{
instance = new Singleton();
}
}
}
return instance;
}
}
//public sealed class Singleton //sealed: 阻止发生派生,而派生可能会增加实例
//{ //在第一次引用类的任何成员时创建实例 。公共语言运行库负责处理变量初始化
// private static readonly Singleton instance = new Singleton();
// private Singleton() { } //构造方法私有,不能再类本身以外实例化Singleton
// public static Singleton GetInstance()
// {
// return instance;
// }
//}
}
窗体单例模式1:
using System.Text;
using System.Windows.Forms;
namespace 单例模式
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
this.IsMdiContainer = true;
}
private FormToolbox ftb;
private void ToolStripMenuItemToolbox_Click(object sender, EventArgs e)
{
if (ftb==null||ftb.IsDisposed)
{
ftb = new FormToolbox();
ftb.MdiParent = this;
ftb.Show();
}
}
}
}
窗体单例模式3:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace 单例模式
{
public partial class FormToolbox : Form
{
private static FormToolbox ftb = null;
private FormToolbox()
{
InitializeComponent();
}
public static FormToolbox GetInstance()
{
if (ftb == null || ftb.IsDisposed)
{
ftb = new FormToolbox();
ftb.MdiParent=Form1.ActiveForm;
}
return ftb;
}
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace 单例模式
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
this.IsMdiContainer = true;
}
private void ToolStripMenuItemToolbox_Click(object sender, EventArgs e)
{
FormToolbox.GetInstance().Show();
}
private void toolStripButton1_Click(object sender, EventArgs e)
{
FormToolbox.GetInstance().Show();
}
}
}