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

    定义

    确保一个类在程序中只有一个实例并提供一个访问它的全局访问点。

    类图

    代码

     1    public class SingleTon
     2     {
     3         private static object mLock = new object();
     4         private SingleTon()
     5         { }
     6         private static SingleTon instance;
     7         public static SingleTon GetInstance()
     8         {
     9             if (instance == null)
    10             {
    11                 lock (mLock)
    12                 {
    13                     if (instance == null)
    14                     {
    15                         instance = new SingleTon();
    16                     }
    17                 }
    18             }
    19             return instance;
    20 
    21         }
    22     }

    总结

    曾经非常纠结,为什么不用静态的类来代替单例。后来才知道,静态不能保证程序中只有一个这个类的实例,甚至可能会新建,所以它并不能替换。

    也曾考虑为什么在获取实例处要判断两次if (instance == null)--这个则是考虑两个线程同时到达时锁前锁后重复创建的严谨性与正确性。

    关于恶汉模式(private static SingleTon instance=new SingleTon();),定义变量时初始化,则在类第一次被访问时触发初始化,以后就可以实习单例的重复使用了,这样也是可行的。

    Top
    收藏
    关注
    评论
  • 相关阅读:
    丁丁又病了
    领导之所以是领导
    丁丁的进步
    最近比较烦
    批量更新数据表
    转帖:《EnterLib PIAB深入剖析》系列博文汇总
    XML DOM介绍
    转大白话系列之C#委托与事件讲解大结局
    using
    jQuery工作原理解析以及源代码示例
  • 原文地址:https://www.cnblogs.com/Joy-et/p/4876196.html
Copyright © 2011-2022 走看看