• 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/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    Structured streaming
    streaming窗口操作
    scala伴生对象,apply()及单例
    storm集成kafka
    solr简易安装配置
    拦路雨偏似雪花,饮泣的你冻吗?--稍瑞,我是关键字过滤器
    我存在,你深深的循环里--从反射看JSON死循环
    ueditor:原谅我这一生不羁放纵爱独特
    或许你不知道(2):LinkedList
    自定义负载均衡
  • 原文地址:https://www.cnblogs.com/tianxue/p/3524430.html
Copyright © 2020-2023  润新知