• 设计模式之单例模式


    单例模式---顾名思义,就是一个类只有一个实例对象,只实例化一次。它有三个要点:(1)一个类只有一个实例(2)类本身自行创建这个实例(3)它必须自行上下向整个系统提供该实例。

    代码实现:

     1 public class QQSingle
     2     {
     3         private string name;
     4         private static QQSingle qqsingle;
     5         private static object _lock = new object();
     6         public string Name
     7         {
     8             get
     9             {
    10                 return this.name;
    11             }
    12             set
    13             {
    14                 this.name = value;
    15             }
    16         }
    17         public static QQSingle getQQ()
    18         {
    19             if (qqsingle == null)
    20             {
    21                 lock (_lock)
    22                 {
    23                     if (qqsingle == null)
    24                     {
    25                         qqsingle = new QQSingle();
    26                     }
    27                 }
    28             }
    29             return qqsingle;
    30         }
    31     }

       上述代码使用了双重锁方式较好地解决了多线程下的单例模式实现。先看内层的if语句块,使用这个语句块时,先进行加锁操作,保证只有一个线程可以访问该 语句块,进而保证只创建了一个实例。再看外层的if语句块,这使得每个线程欲获取实例时不必每次都得加锁,因为只有实例为空时(即需要创建一个实例),才 需加锁创建,如果已存在一个实例,就直接返回该实例,节省了性能开销。

    测试:

     1 class Program
     2     {
     3         static void Main(string[] args)
     4         {
     5             QQSingle qqsingle = QQSingle.getQQ();
     6             QQSingle qqsingle1 = QQSingle.getQQ();
     7             qqsingle.Name = "nannan";
     8             qqsingle1.Name = "qq";
     9             Console.WriteLine("{0},{1}",qqsingle.Name,qqsingle1.Name);
    10             Console.ReadLine();
    11         }
    12     }

    输出结果:qq,qq  这就说明了两个实例对象其实是同一个对象。

  • 相关阅读:
    设计模式之桥接模式
    设计模式之适配器模式
    设计模式之代理模式
    设计模式之建造者模式
    设计模式之抽象工厂模式
    设计模式之工厂方法模式
    设计模式之简单工厂模式
    设计模式之原型模式
    api接口测试的步骤
    3种优化回归测试的方法
  • 原文地址:https://www.cnblogs.com/nannanITeye/p/3008318.html
Copyright © 2020-2023  润新知