设计模式之单态模式
author: 李艳庆
date: 2005年11月4日
单态模式Singleton, 目的是保在调用期间, 一个类只有一个实例存在.
最典型的例子为数据库连接, 数据库连接只需要一个, 所以可以使用单态模式.
使用单态模式时, 创建数据库连接的方法, 只能为静态, 并且要保证方法的同步, 否则在多线程操作中, 有可能会创建多个实例.
示例代码如下:
using System;
using System.Data.OleDb;
using System.Runtime.Remoting.Contexts;
[Synchronization()]
public class ConnectionClass
{
private static OleDbConnection instance = null;
private static string constring = "Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=singleton.mdb;Mode=Share Deny None;Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False";
public static OleDbConnection GetInstance()
{
if (instance == null)
{
Console.WriteLine("Create new connection");
instance = new OleDbConnection(constring);
}
return instance;
}
}
public class Client
{
public static void Main()
{
OleDbConnection cn = ConnectionClass.GetInstance();
cn.Open();
cn = ConnectionClass.GetInstance();
cn.Close();
}
}