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

1 描述

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

2 UML类图

图1-1 单例模式类图

3 代码

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;
}
}
}

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();
}
}
}

3.1 结构介绍

图1-2 代码结构

3.2 具体代码

3.3 运行截图

图1-2 运行结果

4 注意

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

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

5 延伸

有上限的单例模式

06002001单例模式C#实现版本的更多相关文章

  1. Objective-C(iOS)严格单例模式正确实现

    注:本文所有权归作者所有,转载请注明出处 当希望在一个应用程序中某个类的对象只能存在一个的时候就可以考虑用单例模式来实现,单例模式在C++中比较容易实现(只需把构造函数声明为private),而在Ob ...

  2. 【单例模式】单例模式 & GCD单例模式 & 将封装单例模式到宏

    懒汉式单例模式 下面的代码块, 基本是单例模式的完整版本了. 可扩展的地方,可以在init方法中作扩展. // static 在全局变量的作用域仅限于当前文件内部 static id _instanc ...

  3. JavaScript面试系列:JavaScript设计模式之桥接模式和懒加载

    我写的程序员面试系列文章 Java面试系列-webapp文件夹和WebContent文件夹的区别? 程序员面试系列:Spring MVC能响应HTTP请求的原因? Java程序员面试系列-什么是Jav ...

  4. 实现单例模式C++版本

    还是先看最简单的C++单例模式 class CSingleton { private: CSingleton(){} static CSingleton *pInstance; public: sta ...

  5. C# 单例模式Lazy<T>实现版本

    非Lazy版本的普通单例实现: public sealed class SingletonClass : ISingleton { private SingletonClass () { // the ...

  6. 单例模式简介以及C++版本的实现

        本篇博文主要内容参考 C++的单例模式一文,在此,为原作者耐心细致的分析讲解,表示感谢.本文将结合此篇文章,给出自己做实验后的理解以及代码,作为今天学习的小结.     单例模式,它的意图是保 ...

  7. Javascript单例模式概念与实例

    前言 和其他编程语言一样,Javascript同样拥有着很多种设计模式,比如单例模式.代理模式.观察者模式等,熟练运用Javascript的设计模式可以使我们的代码逻辑更加清晰,并且更加易于维护和重构 ...

  8. C#初学单例模式

    版本1:最简单的单例模式 public class MySingleton { private MySingleton() //构造函数,注意private { } private static My ...

  9. 【白话设计模式四】单例模式(Singleton)

    转自:https://my.oschina.net/xianggao/blog/616385 0 系列目录 白话设计模式 工厂模式 单例模式 [白话设计模式一]简单工厂模式(Simple Factor ...

随机推荐

  1. Mac OS安装php-redis扩展

    下载php-redis(用于php5.x的版本),地址:https://nodeload.github.com/nicolasff/phpredis/zip/master. 如果是php7.2,选择p ...

  2. DispatcherServlet的初始化(二)

    DispatcherServlet的初始化在springmvc的启动中有讲过,这一篇在上一篇的基础上接着讲.DispatcherServlet作为springmvc的前端控制器,还需要初始化其他的模块 ...

  3. 在 FastAdmin 中启动 ThinkPHP 5 的请求缓存分析

    在 FastAdmin 中启动 ThinkPHP 5 的请求缓存分析 缓存的基础配置 ThinkPHP 5 中有一个请求缓存:1 'request_cache' => true, 'reques ...

  4. 解决asp.net上传文件时文件太大导致的错误

    即使在web.config中添加了节点和设置依然是不行的,还是报文件太大的错误, <httpModules>       <add name="UploadHttpModu ...

  5. 常见企业IT支撑【2、samba共享文件夹】

    samba共享文件夹,较Window自带的比较:开源,安全 建议安装samba4,兼容性好 1.安装samba #yum -y install samba4 samba4-client 2.备份sam ...

  6. mac链接linux

    连接 : ssh 用户名@主机名   -- ssh -p 22 root@47.98.164.34 上传:  scp  要上传的文件名称    用户名@主机名:上传到的路径 下载: scp 用户名@主 ...

  7. python中scipy学习——随机稀疏矩阵及操作

    1.生成随机稀疏矩阵: scipy中生成随机稀疏矩阵的函数如下: scipy.sparse.rand(m,n,density,format,dtype,random_state) 1 参数介绍: 参数 ...

  8. python学习 (三十一) python中的class

    1 python的类:   Python类都继承自object. __init__: 构造函数,如果不写,有一个默认的. __init__: 这个构造函数只能有一个,Python中不能有多个构造函数. ...

  9. oracle建立用户与授权(转载)

    创建表空间及用户: create tablespace 表空间名 datafile 'd:/seal.dbf' size 10M autoextend on;create user username ...

  10. Solr 6.0 学习(五)solr基本查询和高级查询

    参考:http://www.cnblogs.com/rainbowzc/p/4354224.html 查询参数 常用: q - 查询字符串,必须的. fl - 指定返回那些字段内容,用逗号或空格分隔多 ...