06002001单例模式C#实现版本
书名:设计模式之禅 作者:秦小波 出版社:机械工业出版社
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#实现版本的更多相关文章
- Objective-C(iOS)严格单例模式正确实现
注:本文所有权归作者所有,转载请注明出处 当希望在一个应用程序中某个类的对象只能存在一个的时候就可以考虑用单例模式来实现,单例模式在C++中比较容易实现(只需把构造函数声明为private),而在Ob ...
- 【单例模式】单例模式 & GCD单例模式 & 将封装单例模式到宏
懒汉式单例模式 下面的代码块, 基本是单例模式的完整版本了. 可扩展的地方,可以在init方法中作扩展. // static 在全局变量的作用域仅限于当前文件内部 static id _instanc ...
- JavaScript面试系列:JavaScript设计模式之桥接模式和懒加载
我写的程序员面试系列文章 Java面试系列-webapp文件夹和WebContent文件夹的区别? 程序员面试系列:Spring MVC能响应HTTP请求的原因? Java程序员面试系列-什么是Jav ...
- 实现单例模式C++版本
还是先看最简单的C++单例模式 class CSingleton { private: CSingleton(){} static CSingleton *pInstance; public: sta ...
- C# 单例模式Lazy<T>实现版本
非Lazy版本的普通单例实现: public sealed class SingletonClass : ISingleton { private SingletonClass () { // the ...
- 单例模式简介以及C++版本的实现
本篇博文主要内容参考 C++的单例模式一文,在此,为原作者耐心细致的分析讲解,表示感谢.本文将结合此篇文章,给出自己做实验后的理解以及代码,作为今天学习的小结. 单例模式,它的意图是保 ...
- Javascript单例模式概念与实例
前言 和其他编程语言一样,Javascript同样拥有着很多种设计模式,比如单例模式.代理模式.观察者模式等,熟练运用Javascript的设计模式可以使我们的代码逻辑更加清晰,并且更加易于维护和重构 ...
- C#初学单例模式
版本1:最简单的单例模式 public class MySingleton { private MySingleton() //构造函数,注意private { } private static My ...
- 【白话设计模式四】单例模式(Singleton)
转自:https://my.oschina.net/xianggao/blog/616385 0 系列目录 白话设计模式 工厂模式 单例模式 [白话设计模式一]简单工厂模式(Simple Factor ...
随机推荐
- 将美化进行到底,把 PowerShell 做成 oh-my-zsh 的样子
不知你有没有看过 Linux 上 oh-my-zsh 的样子?看过之后你一定会惊叹,原来命令行还能这么玩!然而 Windows 下能这么玩吗?答案是可行的,接下来就来看看怎么玩. Windows 下我 ...
- Django 向数据表中添加字段方法
在模型order中添加字段discount字段,并给予初始值0 方法: 先在models.py中修改模型 添加 discount = models.DecimalField(max_digits=8, ...
- 【加密算法】PFX文件提取公钥私钥
方法1: 原版PFX证书 openssl pkcs12 -in myssl.pfx -nodes -out server.pem 提取私钥 openssl rsa -in server.pem -ou ...
- Epub格式的电子书——文件组成
epub格式电子书遵循IDPF推出的OCF规范,OCF规范遵循ZIP压缩技术,即epub电子书本身就是一个ZIP文件,我们将epub格式电子书的后缀.epub修改为.zip后,可以通过解压缩软件(例如 ...
- Linux驱动开发基础知识
常用命令 lsmod: list module,将模块列表显示),功能是打印出当前内核中已经安装的模块列表 insmod: install module,安装模块,功能是向当前内核中去安装一个模块,用 ...
- parcel vue 简单使用
1.安装依赖 yarn global add parcel-bundler yarn add babel-preset-env --dev yarn add parcel-plugin-vue --d ...
- Cucumber 使用例子
1. junit 配置 @RunWith(Cucumber.class) @CucumberOptions(format ={"pretty","html:target/ ...
- mysql执行导入导出数据源
mysql执行导入导出数据源 一.导出数据表结构 导出数据库建表的结构,不带数据,windows环境下,在cmd下,执行: mysqldump –no-data –u username –p* dat ...
- ubuntu 12.04lts 安装mysql ,并通过QT连接
安装server$ sudo apt-get install mysql-server 安装驱动 $ sudo apt-get install libqt4-sql-mysql $ dpkg --li ...
- bzoj 1101 [POI2007]Zap——反演
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1101 #include<cstdio> #include<cstring& ...