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

    内容来源:大话设计模式

    1、单例模式(Singleton),保证一个类仅有一个实例,并提供一个访问它的全局访问点。

    2、单例模式因为Singleton类封装了它的唯一实例,这样它可以严格地控制客户怎样访问它以及如何访问它。简单地说就是对唯一实例的受控访问。

    3、双重锁定:不让线程每次都加锁,而是在实例未被创建的时候再加锁处理。同时也能保证多线程的安全。

    class Singleton

    {

      private static Singleton instance;

      private static readonly object syncRoot  = new object();

      private Singletom(){}

      

      public static Singleton GetInstance()

      {

        if(instance == null)

        {

          lock(syncRoot)

          {

            if(instance == null)

            {

              instance = new Singleton();

            }

          }

        }

      }

    }

    4、 饿汉式单例类:静态初始化的方式是在自己被加载时就将自己实例化(提前占用系统资源)

      懒汉式单例类:要在自己第一次被引用时,才会将自己实例化(面临多线程的安全性问题,需要双重锁定才能保证其安全)

    饿汉式单例类:

    public sealed class Singleton  //阻止发生派生,而派生可能会增加实例

    {

      private static readonly Singleton instant = new Singleton;  //在第一次引用类的任何成员时创建实例。公共语言运行库负责处理初始化。

      private Singletonn(){}

      public Singleton GetInstance()

      {

        return instance;

      }

    }

  • 相关阅读:
    mysql explain用法和结果的含义
    heapset水平自动扩容
    dashboard安装
    对List集合中的对象进行按某个属性排序
    MySql查询当天、本周、本月、本季度、本年的数据
    三种List集合的遍历方式
    Date相关处理
    ubuntu-14.04.2-desktop使用方法
    PowerShell命令卸载Win10内置应用
    Windows下MySQL绿色版安装配置与使用
  • 原文地址:https://www.cnblogs.com/YepQX/p/4296462.html
Copyright © 2011-2022 走看看