计数器功能
实际用途 : 网站访问量的统计:
代码 :
///
/// whs
/// 声明一个单件模式的对话类
/// 注意的事项
/// 1 构造函数必须是所有的。
/// 2 创建实例的函数必须是静态的的
/// 3 实例对象必须是静态的
///
class SingletonCount
{
//声明私有的构造函数
private SingletonCount()
{ }
private static SingletonCount mySingletonCount;
private static int count = 0;
public string setCount()
{
count = count +1;
return count.ToString();
}
public static SingletonCount GetInstance()
{
if (mySingletonCount == null)
{
mySingletonCount = new SingletonCount();
}
return mySingletonCount;
}
}
数据库连接
实际用途 : 程序连接数据库,如果每次操作数据库都要去连接数据库,是一笔很大的系统开销,那么我们可以让程序保持一个数据库连接。创建一个数据库单件模式的类 可以实现这个架构。
代码 :
///
/// 单件模式的数据库连接。
/// whs:
///
public class SingletonDataConnect
{
// 连接实例
private static OleDbConnection conn = null;
// 连接字符串
private string connString;
//类实例的锁
private static object classlock = typeof(SingletonDataConnect);
//类的实例『类的内部可以包含类的实例:只是声明一个变量,但是没有实例化,那么指针到底指向了谁。』
private static SingletonDataConnect dc;
//类是否实例化的标志。
private static bool instanceFlag = false;
//定义私有构造函数防止用户生成实例;用户不能生成实例,那么哪里进行实例初始化那。
private SingletonDataConnect()
{
connString = getConnString();
}
private string getConnString()
{
try
{
XmlDocument doc = new XmlDocument();
doc.Load(@"conn.xml"); //数据库连接设置的XML文件
string returnval = doc.DocumentElement.InnerText.Trim();
doc = null;
return returnval;
}
catch (Exception err)
{
throw new Exception(err.Source + ":" + err.Message);
}
}
// 对类进行实例化。
public static SingletonDataConnect CreateConn()
{
//生成实例前加锁,保证只生成一个连接实例
lock (classlock)
{
// 如果生成过实例就不再生成新的实例。
if (!instanceFlag)
{
dc = new SingletonDataConnect();
instanceFlag = !instanceFlag;
}
}
return dc;
}
public OleDbConnection Open()
{
if (conn == null)
{
conn = new OleDbConnection(connString);
conn.Open();
}
return conn;
}
public void Close()
{
if (conn.State == System.Data.ConnectionState.Open)
{
conn.Close();
conn = null;
}
}