单利模式
目录
一、单利模式的概念和应用
二、单利模式的应用举例
一、单利模式的概念和应用
1、单利模式能解决的问题: 保证对象使用的时候,只有唯一的一个对象
2、单利模式的概念: 单利 模式就是在对象使用中,只有一个对象。基本方法就是提供一个静态访问方法,保证只有一个实例,不会重复创建
3、使用单利模式的好处: 在某些特定情况下可以节省资源,避免性能损失
4、单利模式的应用: 在非关系型数据库中,底层的连接池都会用到
二、单利模式的应用举例
创建一个控制台应用程序SingletonDesignPattern
1、通过new来创建对象时,new几次就执行几次构造方法。示例:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace SingletonDesignPattern1
{
class Program
{
static void Main(string[] args)
{
CommonClass test1 = new CommonClass();
test1.CommonTest();
CommonClass test2 = new CommonClass();
test2.CommonTest();
Console.ReadKey();
}
#region 普通类
//创建一个CommoClass类
public class CommonClass
{
public CommonClass()
{
Console.WriteLine(DateTime.Now.ToShortTimeString () +"时:构造方法CommonClass()被调用");
//也可以在这个地方做其他资源的访问
System.Threading.Thread.Sleep(4000);
}
//编写一个测试方法
public void CommonTest()
{
Console.WriteLine(DateTime.Now.ToShortTimeString()+ ":测试方法CommonTest()被调用");
}
}
#endregion
}
}
执行结果:构造方法被执行两次
2、改进这个程序,在单线程模式下使用单利模式来创建两次对象,看构造方法的执行次数
单线程单利模式的三个步骤:
- 创建一个私有的静态成员变量来保存当前示例
- 将构造方法私有化,目的是禁止外部创建
- 通过一个静态方法来返回这个示例
代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace SingletonDesignPattern1
{
class Program
{
static void Main(string[] args)
{
//CommonClass test1 = new CommonClass();
//test1.CommonTest();
//CommonClass test2 = new CommonClass();
//test2.CommonTest();
//测试单线程模式下的单利模式方法
// SingletonClass testClass = new SingletonClass(); 这种方式创建对象将不再可行,因为构造方法被设为私有
SingletonClass testClass1 = SingletonClass.GetInstance();
testClass1.CommonTest();
SingletonClass testclass2 = SingletonClass.GetInstance();
testclass2.CommonTest();
Console.ReadKey();
}
#region 普通类
//创建一个CommoClass类
public class CommonClass
{
public CommonClass()
{
Console.WriteLine(DateTime.Now.ToShor