一、定义

从“单例”字面意思上理解为一个类只有一个实例。官方定义:确保一个类只有一个实例,并提供一个全局访问点。

二、实现

下面以实现一个日志记录类为例,描述单例模式。

 1 using System;
2 using System.IO;
3
4 namespace Utility
5 {
6 public class Logger
7 {
8 private static Logger loggerInstance = null;
9 private static readonly object lockObject = new object();
10
11 private string logFolderName =@"C:\Temp\LogFiles\FilamentCalibration\";
12
13 private string logFullPath;
14
15 private Logger(string pLogFolderName = @"C:\Temp\LogFiles\FilamentCalibration\")
16 {
17 logFolderName = pLogFolderName;
18 logFullPath = String.Format(logFolderName + "{0:yyyyMMdd HHmmss} FilamentCal.log", DateTime.Now);
19
20 if (!Directory.Exists(logFolderName))
21 {
22 Directory.CreateDirectory(logFolderName);
23 }
24 }
25
26 public static Logger GetLoggerInstance(string pLogFolderName = @"C:\Temp\LogFiles\FilamentCalibration\")
27 {
28 if (loggerInstance == null)
29 {
30 lock (lockObject)
31 {
32 if (loggerInstance == null)
33 {
34 loggerInstance = new Logger(pLogFolderName);
35 }
36 }
37 }
38 return loggerInstance;
39 }
40
41 public void WriteLine(string text)
42 {
43 try
44 {
45 using (StreamWriter myLogger = File.AppendText(logFullPath))
46 {
47 myLogger.WriteLine($"[FilaCal {DateTime.Now:HH:mm:ss.fff]} {text}");
48 }
49 }
50 catch(Exception err)
51 {
52 throw new Exception(err.Message);
53 }
54 }
55 }
56 }

C#设计模式---单例模式(Singleton Pattern)的更多相关文章

  1. 浅谈设计模式--单例模式(Singleton Pattern)

    题外话:好久没写blog,做知识归纳整理了.本来设计模式就是个坑,各种文章也写烂了.不过,不是自己写的东西,缺少点知识的存在感.目前还没做到光看即能记住,得写.所以准备跳入设计模式这个大坑. 开篇先贡 ...

  2. 设计模式之单例模式(Singleton Pattern)

    单例模式 单例模式(Singleton Pattern)在java中算是最常用的设计模式之一,主要用于控制控制类实例的数量,防止外部实例化或者修改.单例模式在某些场景下可以提高系统运行效率.实现中的主 ...

  3. 乐在其中设计模式(C#) - 单例模式(Singleton Pattern)

    原文:乐在其中设计模式(C#) - 单例模式(Singleton Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 单例模式(Singleton Pattern) 作者:weba ...

  4. 设计模式系列之单例模式(Singleton Pattern)——确保对象的唯一性

    模式概述 模式定义 模式结构图 饿汉式单例与懒汉式单例 饿汉式单例 懒汉式单例 模式应用 模式在JDK中的应用 模式在开源项目中的应用 模式总结 主要优点 适用场景 说明:设计模式系列文章是读刘伟所著 ...

  5. 【设计模式】单例模式 Singleton Pattern

    通常我们在写程序的时候会碰到一个类只允许在整个系统中只存在一个实例(Instance)  的情况, 比如说我们想做一计数器,统计某些接口调用的次数,通常我们的数据库连接也是只期望有一个实例.Windo ...

  6. 二十四种设计模式:单例模式(Singleton Pattern)

    单例模式(Singleton Pattern) 介绍保证一个类仅有一个实例,并提供一个访问它的全局访问点. 示例保证一个类仅有一个实例. Singleton using System; using S ...

  7. 抽象工厂(Abstract Factory),工厂方法(Factory Method),单例模式(Singleton Pattern)

    在谈工厂之前,先阐述一个观点:那就是在实际程序设计中,为了设计灵活的多态代码,代码中尽量不使用new去实例化一个对象,那么不使用new去实例化对象,剩下可用的方法就可以选择使用工厂方法,原型复制等去实 ...

  8. 十次艳遇单例设计模式(Singleton Pattern)

    1.引言 单例设计模式(Singleton Pattern)是最简单且常见的设计模式之一,在它的核心结构中只包含一个被称为单例的特殊类.通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访 ...

  9. 设计模式 单例模式(Singleton) [ 转载2 ]

    设计模式 单例模式(Singleton) [ 转载2 ] @author java_my_life 单例模式的结构 单例模式的特点: 单例类只能有一个实例. 单例类必须自己创建自己的唯一实例. 单例类 ...

  10. 设计模式 单例模式(Singleton) [ 转载 ]

    设计模式 单例模式(Singleton) [ 转载 ] 转载请注明出处:http://cantellow.iteye.com/blog/838473 前言 懒汉:调用时才创建对象 饿汉:类初始化时就创 ...

随机推荐

  1. Java基础00-多态19

    1. 多态 多态 1.1 多态概述 代码示例: 动物类: public class Animal { public void eat(){ System.out.println("动物吃东西 ...

  2. svo论文随手记

    论文链接:http://rpg.ifi.uzh.ch/docs/ICRA14_Forster.pdf 论文提出了一种半直接单目视觉里程计,在精确性.鲁棒性和速度方面都有较大的优势.将基于特征的方法(包 ...

  3. Day6 三种结构 顺序选择循环!

    顺序结构 从上到下依次执行,它是任何算法都离不开的一种基本算法结构. package com.xiaoming.struct;​public class ShunXuDemo {    public ...

  4. 基于JSP的学生考勤管理系统(MySQL版)

    介绍:基于JSP的学生考勤管理系统(MySQL版)1.包含源程序,数据库脚本.代码和数据库脚本都有详细注释.2.课题设计仅供参考学习使用,可以在此基础上进行扩展完善.开发环境:Eclipse ,MyS ...

  5. 在Ubuntu20中安装Elasticsearch和Kibana6.8.1版本 母胎教学

    首先,我们在Ubuntu中安装Elasticsearch6.8.1命令如下: $ docker pull elasticsearch:6.8.1 拉取完成后,创建Elasticsearch6.8.1容 ...

  6. 如何用css画一个彩虹---v客学院技术分享

    无意间看到了CSS radial-gradient() 函数实现了如下图的样式 仔细一看还真有点像灯光下的鸡蛋,O(∩_∩)O哈哈~ 今天我就来用radial-gradient()函数教大家画一个简单 ...

  7. bash对一个目录中文件名的遍历

    for var in *      对当前目录中文件名的遍历 for var in /xx/xx/* 对绝对路径目录的遍历 ${var##*/}  变量扩展取文件名的基名 $var =~ ^[0-9] ...

  8. Pytest单元测试框架之简单操作示例

    前言: Pytest是第三方单元格测试框架,更加简单,灵活,而且提供了更多丰富的扩展: Pytest与UnitTest框架的区别 UnitTest测试用例执行顺序是依照ascii码执行,而Pytest ...

  9. Python 机器学习实战 —— 无监督学习(上)

    前言 在上篇<Python 机器学习实战 -- 监督学习>介绍了 支持向量机.k近邻.朴素贝叶斯分类 .决策树.决策树集成等多种模型,这篇文章将为大家介绍一下无监督学习的使用.无监督学习顾 ...

  10. 【动态规划】合唱队形 luogu-

    分析 做两遍最长上升子序列,在遍历一下,取最大值. AC代码 #include <bits/stdc++.h> using namespace std; #define ms(a,b) m ...