//懒汉式
private static readonly object obj = new object();
private static DbConnection dbConnection;
private DbConnection()
{
}
public static DbConnection getDbConnection()
{
if (dbConnection == null)
{
lock (obj)
{
if (dbConnection == null)
{
dbConnection = new DbConnection();
}
}
}
return dbConnection;
}
public void openConnection()
{
Console.WriteLine("开启数据库连接");
}
//饿汉式
private static readonly DbConnection dbConnection = new DbConnection();
private DbConnection()
{ }
public static DbConnection getDbConnection()
{
return dbConnection;
}
public void openConnection()
{
Console.WriteLine("开启数据库连接");
}
//懒汉式
//DbConnection dbConnection= DbConnection.getDbConnection();
//DbConnection dbConnection2 = DbConnection.getDbConnection();
//dbConnection.openConnection();
//if (dbConnection == dbConnection2)
//{
// Console.WriteLine("相同的");
//}
//Console.ReadLine();
//饿汉式
DbConnection dbConnection = DbConnection.getDbConnection();
DbConnection dbConnection2 = DbConnection.getDbConnection();
if (dbConnection == dbConnection2)
{
Console.WriteLine("相同的");
}
Console.ReadLine();
总结:保证类只有一个实例,自己完成自己的实例化
懒汉式:在第一次被引用的时候实例化,不提前占资源,但需要双重锁保证线程安全。
饿汉式:被加载时实例化,需要提前占用资源。
与静态方法区别:
1、静态方法里面的对象使用过后会释放,频繁使用释放也耗资源;单例由于有一个实例化,会一直存在。
2、单例可以继承类,实现接口,方法可以被重载。
3、单例比静态方法更灵活。
原文地址:http://blog.51cto.com/5591787/2118879