zoukankan      html  css  js  c++  java
  • 单例模式(Singleton)示例源码

       模式分析
         在某种程度上,单例模式中限制而不是改进类的创建,单例模式可以保证一个类有且只有一个实例.
         并提供一个访问的全局访问点.在程序设计过程中,有很多情况需要保证一个类只有一个实例.
         特点:
         ~  单例类只能有一个实例
         ~  单例类必须自己创建自己的唯一实例.
         ~  单例类必须给所有其他对象提供这一实例.
        在哪些情况下使用单例模式
        使用单例模式有一个必要条件:在一个系统要求一个类只有一个实例时才应当使用单例模式.
             反过来,如果一个类可以有几个实例共存,就不要使用单例模式.
        不要使用单例模式存取全局变量,这违背了单例模式的用意,最好放到对应类Static成员中.
       不要将数据库连接做成单例,因为一个系统可能会与数据库有多个连接,并且在有连接池的
            情况下,应当尽可能及时释放连接.Singleton模式由于使用静态成员存储类实例,所以可能会造成
            资源无法及时释放,带来问题.
        源码分析
          控制台程序 Program.cs

    Singleton_8023
    /*该源码由邹江平2008-8-14编写,如有学习者请与QQ:200580231联系*/
         功能说明:该代码显示了负载均衡实例对象,在负载均衡模型中,有多台服务器可提供服务
                      任务分配器随机挑选一台服务器提供服务,以确保任务均衡(实际情况比这个
                      复杂得多).这里,任务分配实例只有一个,负责挑选服务器并分配任务.
         补充说明:
          .NET Framework平台优势实现Singleton 实例.
           sealed class Singleton
          {
               private extern Singleton();
               public static readonly Singleton Instance=new Singelton();
          }
         这样代码虽然很少,但解决了线程的性能上的损失,工作原理是:Singleton类被声明为Sealed,
        用于不会被继承,将成员变量Instance声明为Public readonly ,并在声明时被初始化,通过这些
        改变,确实得到了Singleton的设计模式
         但这存在一定的根本问题,实例在程序运行时就被初始化.无法实现延迟初始化,为解决这
       一问题,实现了延迟初始化.
       样例如下:
        public sealed class Singleton
       {
             Singleton()
            {}
            public static Singleton GetInstance()
          {
              return Nested.instance;
           }
          class Nested
         {
               static Nested()
              {}
              internal static readonly Singleton instance=new Singleton();
          }
       }
  • 相关阅读:
    一步步学习SPD2010--第十三章节--管理SP Server环境的Web内容(2)--理解SP Server2010的Web内容管理
    一步步学习SPD2010--第十三章节--管理SP Server环境的Web内容(1)--创建一个发布网站
    一步步学习SPD2010--第十三章节--管理SP Server环境的Web内容
    一步步学习SPD2010--第十二章节--理解可用性和可接入性(8)--关键点
    亚马逊推自家云备份产品,第三方云备份厂商压力山大 中国存储网
    几何概率模型是什么
    宋浩《概率论与数理统计》笔记---1..1.1-1.1.3、概率论基本概念
    机器学习疑难---1、什么是多元线性回归
    最大似然估计线性回归实例
    Hopfield神经网络 简介
  • 原文地址:https://www.cnblogs.com/zjp8023/p/Singleton_8023.html
Copyright © 2011-2022 走看看