• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP.NET > .Net 单例模式(Singleton)

.Net 单例模式(Singleton)

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了singleton 单例模式,.net单例模式,单例模式,单例模式java,单例模式例子等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
每台计算机可以有若干个打印机,但只能有一个Printer Spooler, 以避免两个打印作业同时输出到打印机中。每台计算机可以有若干传真卡,但是只应该有一个软件负责管理传真卡,以避免出现两份传真作业同时传到传真卡中的情况。每台计算机可以有若干通信端口,系统应当集中管理这些通信端口,以避免一个通信端口同时被两个请求同时调用。

问题描述:

        单例模式 Singleton Pattern

问题解决:

(1)单例模式简介:

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

单例模式特点:

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

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

        (2)单例模式的实现:

(2.1)简单实现:

clipboard

上述实现的优点:

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

上述实现的缺点:

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

    (2.2)安全的线程:

clipboard

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

    (2.3)双重锁定

clipboard

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

(2.4)静态初始化

clipboard

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

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

     (2.5)延迟初始化:

clipboard

        (3)单例模式的优缺点:

clipboard

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

clipboard

        (5)具体实例:

总结:

        Singleton设计模式是一个非常有用的机制,可用于在面向对象的应用程序中提供单个访问点。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • .Net 单例模式(Singleton)

相关文章

  • 2017-05-11asp.net Textbox服务器控件
  • 2017-05-11基于SignalR的消息推送与二维码扫描登录实现代码
  • 2017-05-11asp.net ckeditor编辑器的使用方法
  • 2017-05-11asp.net上传图片保存到数据库的代码
  • 2017-05-11.NET中获取Access新增记录Id怪现象解决方法
  • 2017-05-11ASP.NET Table 表格控件的使用方法
  • 2018-08-20WPF气泡提示框的简单制作
  • 2017-05-11Visual Studio 2010 前端开发工具/扩展/插件推荐
  • 2017-05-11WebForm获取checkbox选中的值(几个简单的示例)
  • 2018-08-20SqlDataReader指定转换无效的解决方法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • ASP.NET Core利用UrlFirewall对请求进行过滤的方法示例
    • DataTable多列合并问题轻松搞定
    • Repeater的FooterTemplate中控件内容设置方法
    • asp.net Ajax 安装与卸载方法
    • 有潜在危险的 Request.Form 值避免方法
    • asp.net中ListBox 绑定多个选项为选中及删除实现方法
    • ASP.NET之自定义同步HTTP处理程序(图文教程)
    • asp.net创建XML文件的方法小结
    • CKEditor与dotnetcore实现图片上传功能
    • .Net Core实现图片文件上传下载功能

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有