zoukankan      html  css  js  c++  java
  • 06002001单例模式C#实现版本

    书名:设计模式之禅 作者:秦小波 出版社:机械工业出版社

    描述

        确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例

    2 UML类图

     

    图1-1 单例模式类图

    代码

        Singleton.cs类

      

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace china.sichuan.deyang.Singleton
    {
        /// <summary>
        /// 推荐的单例模式实现类
        /// </summary>
        public class Singleton
        {
            private static Singleton singleton = new Singleton();
    
            /// <summary>
            /// 构造函数,限制产生多个对象
            /// </summary>
            private Singleton()
            {
                //// 这句是提示信息
                Console.WriteLine("调用Singleton的构造函数");
            }
    
            /// <summary>
            /// 通过该方法获得实例对象
            /// </summary>
            /// <returns></returns>
            public static Singleton GetInstance()
            {
                return singleton;
            }
        }
    }
    View Code

        Program.cs类

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace china.sichuan.deyang.Singleton
    {
        class Program
        {
            static void Main(string[] args)
            {
                 
                Singleton singleton1 = Singleton.GetInstance();
                Singleton singleton2 = Singleton.GetInstance();
                Console.WriteLine(singleton1 == singleton2 ? "singleton1与singleton2是同一个对象" : "singleton1与singleton2不是同一个对象");
                Console.Read();
            }
        }
    }
    View Code

    3.1 结构介绍

     

    图1-2 代码结构

     

    3.2 具体代码

    3.3 运行截图

     

    图1-2 运行结果

    注意

        单例模式的实现有很多种,上面是推荐的一种,线程安全的实现方式。可以从以下几个方面来考虑实现单例模式。

    •     构造函数private
    •     多线程的时候考虑线程安全
    •     考虑对象复制的情况,不要实现对象复制的接口

    延伸

        有上限的单例模式

     

    作者:BestNow
    出处:http://www.cnblogs.com/BestNow/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    反汇编角度->C++ const
    反汇编->C++虚函数深度分析
    反汇编->C++内联
    反汇编->C++引用与指针
    数据库初步认识
    数据库系统的结构抽象与演变
    Android · PendingIntent学习
    Android · ContentProvider学习
    notepad++
    MapReduce使用JobControl管理实例
  • 原文地址:https://www.cnblogs.com/tianxue/p/3524430.html
Copyright © 2011-2022 走看看