zoukankan      html  css  js  c++  java
  • 设计模式单例模式

    设计模式,是我们写出优质代码的基础,对于代码的重构以及后期的维护都至关重要。

    单例模式是最简单的设计模式之一,他适用于对某些类要求只有一个实例时,有点像静态类的感觉。

    用实例简单介绍一下:

    创建单例实体类:SingleInstance.cs

    View Code
     1 public class SingleInstance
     2     {
     3         //全局唯一的实例
     4         private static SingleInstance instance;
     5 
     6         //同步对象锁
     7         private static object syncLock = new object();
     8 
     9         //保护级别的构造函数
    10         protected SingleInstance()
    11         {
    12         }
    13 
    14         //对外公开访问唯一实例的方法
    15         public static SingleInstance GetInstance()
    16         {
    17             //支持多线程应用程序通过
    18             //“双重检查锁定”模式,(一旦实例存在)避免锁定每次调用这个方法
    19             if (instance == null)
    20             {
    21                 lock (syncLock)
    22                 {
    23                     if (instance == null)
    24                     {
    25                         instance = new SingleInstance();
    26                     }
    27                 }
    28             }
    29 
    30             return instance;
    31         }
    32 
    33         public int Num
    34         {
    35             get;
    36             set;
    37         }
    38     }

    测试单例的效果:Program.cs

    View Code
     1  static void Main(string[] args)
     2         {
     3             SingleInstance s1 = SingleInstance.GetInstance();
     4             SingleInstance s2 = SingleInstance.GetInstance();
     5 
     6             s1.Num = 10;
     7             s2.Num = 20;
     8             s1.Num = 123456;
     9             Console.WriteLine(s1.Num);
    10             Console.WriteLine(s2.Num);
    11             Console.WriteLine("s1和s2是同一个对象吗?" + (s1 == s2).ToString());
    12             Console.Read();
    13 
    14         }

    运行结果:

    希望大家动手敲一下代码,加深印象。

  • 相关阅读:
    ClipboardJS实现将页面内容复制到剪贴板
    全文索引FULLTEXT 的使用
    [1].Array.diff
    Leetcode——Queue队列
    Matplotlib——scatter散点图
    Matplotlib的一些小细节——tick能见度
    Matplotlib的一些小细节——Annotation标注
    Matplotlib的一些小细节——Legend图例
    Matplotlib基本知识(figure & axes
    锁升级简记
  • 原文地址:https://www.cnblogs.com/LiuShuaiXiaoBuDian/p/2762157.html
Copyright © 2011-2022 走看看