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;

      }

    }

  • 相关阅读:
    java web开发中会遇到的异步执行方案
    MySQL中进行树状所有子节点的查询
    node.js ----NPM使用介绍
    Node.js--学习笔记
    node.js介绍及Win7环境安装测试(转)
    Jmeter中Websocket协议支持包的使用(转)
    jmeter---将回应数据写入到文件
    JMeter 插件 Json Path 解析 HTTP 响应 JSON 数据(转)
    python + Pyglet ---播放视频
    转 RTSP客户端模拟器(TCP方式,Python实现)
  • 原文地址:https://www.cnblogs.com/YepQX/p/4296462.html
Copyright © 2011-2022 走看看