知识大全 .Net 单例模式(Singleton)

Posted

篇首语:世界上三种东西最宝贵本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 .Net 单例模式(Singleton)相关的知识,希望对你有一定的参考价值。

.Net 单例模式(Singleton)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

单例模式的意思就是只有一个实例 单例模式确保某一个类只有一个实例 而且自行实例化并向整个系统提供这个实例 这个类称为单例类   每台计算机可以有若干个打印机 但只能有一个Printer Spooler 以避免两个打印作业同时输出到打印机中 每台计算机可以有若干传真卡 但是只应该有一个软件负责管理传真卡 以避免出现两份传真作业同时传到传真卡中的情 况 每台计算机可以有若干通信端口 系统应当集中管理这些通信端口 以避免一个通信端口同时被两个请求同时调用

  问题描述

  单例模式 Singleton Pattern

  问题解决

  ( )单例模式简介

  Singleton模式要求一个类有且仅有一个实例 并且提供了一个全局的访问点 这就提出了一个问题 如何绕过常规的构造器 提供一种机制来保证 一个类只有一个实例?客户程序在调用某一个类时 它是不会考虑这个类是否只能有一个实例等问题的 所以 这应该是类设计者的责任 而不是类使用者的责任

  单例模式特点

  ( )一个类有且仅有一个实例

  ( )类提供一个全局的访问点

  ( )单例模式的实现

  ( )简单实现

  

  上述实现的优点

  ( )直到对象要求时 才进行实例的初始化 这种实现方法称为 “惰性实例化” 惰性实例化 避免了程序启动时创建不必要的Singleton

  上述实现的缺点

  ( )这种实现对于多线程环境并不安全 可能实例化多个对象 例如可能存在两个线程进行instance==null的判断 然后创建两个单例对象 这就违背了单例模式的设计意图

  ( )安全的线程

  

  以上的实现保证了单例对象在多线程的情况下只会创建一个 但是padlock增加了额外的开销

  ( )双重锁定

  

  这种实现方式对多线程来说是安全的 同时线程不是每次都加锁 只有判断对象实例没有被创建时它才加锁 有了我们上面第一部分的里面的分析 我们知道 加锁 后还得再进行对象是否已被创建的判断 它解决了线程并发问题 同时避免在获取 Instance 的调用中都出现独占锁定 它还允许您将实例化延迟到第一次访问对象时发生 实际上 应用程序很少需要这种类型的实现 大多数情况下我们会用静态初始化 这 种方式仍然有很多缺点 无法实现延迟初始化

  ( )静态初始化

  

  此实现中 将在第一次引用类的任何成员创建实例 该类标记为 sealed 以阻止发生派生 而派生可能会增加实例 此外 变量标记为 readonly 这意味着只能在静态初始化期间(此处显示的示例)或在类构造函数中分配变量 它仍然可以用来解决 Singleton 模式试图解决的两个基本问题 全局访问和实例化控制 公共静态属性为访问实例提供了一个全局访问点 此外 由于构造函数是私有的 因此不能在类本身以外实 例化 Singleton 类 因此 变量引用的是可以在系统中存在的唯一的实例

  由于 Singleton 实例被私有静态成员变量引用 因此在类首次被对 Instance 属性的调用所引用之前 不会发生实例化 这种方法唯一的潜在缺点是 您对实例化机制的控制权较少 在 Design Patterns 形式中 您能够在实例化之前使用非默认的构造函数或执行其他任务 由于在此解决方案中由 NET Framework 负责执行初始化 因此您没有这些选项 在大多数情况下 静态初始化是在 NET 中实现 Singleton 的首选方法

  ( )延迟初始化

  

  ( )单例模式的优缺点

  

  ( )单例模式适用情况和应用场景

  

  ( )具体实例

  总结

  cha138/Article/program/net/201311/14059

相关参考

知识大全 php设计模式之单例、多例设计模式的应用分析

本篇文章是对php设计模式中的单例与多例设计模式的应用进行了详细的分析介绍需要的朋友参考下   单例(Singleton)模式和不常见的多例(Multiton)模式控制着应用程序中类的数量如

知识大全 Singleton模式

最简单的设计模式学习:Singleton模式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  学习

知识大全 设计模式之Singleton(单态模式)

设计模式之Singleton(单态模式)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  摘要讨论

知识大全 单件模式singleton的理解

  Singleton模式是一个较为简单的模式下面的代码就可以建立一个Singlton模式的例子这是一个写系统日志的类实际应用的意义在于在内存中只保存一个实例避免开辟多个功能相同的工具类实例而耗用系统

知识大全 Java单例模式实现

Java单例模式实现  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  单例模式  Q:什么是单例模

知识大全 Java与模式之单例模式

Java与模式之单例模式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  单例模式(Singlet

知识大全 Java单例模式示例

Java单例模式示例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  概念  Java中单例模式是

知识大全 java之单例设计模式

  设计模式解决某一类问题最行之有效的方法(java中有种通用设计模式)  单例设计模式解决一个类在内存中只存在一个对象  单例设计模式有两种方式  )饿汉式  先初始化对象当类一进内存就创建好对象 

知识大全 Singleton设计模式的C#实现

Singleton设计模式的C#实现  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!Singleto

知识大全 C# “Singleton” 模式四种实现方法

C#“Singleton”模式四种实现方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  大家一