1.单件模式(Singleton Pattern)

时间:2022-08-27 10:07:44

意图:为了保证一个类仅有一个实例,并提供一个访问它的全局访问点。

1.简单实现(多线程有可能产生多个实例)

    public class CommonSigleton
{
/// <summary>
/// 私有的对象
/// </summary>
private static CommonSigleton instance; /// <summary>
/// 构造方法为Private
/// </summary>
private CommonSigleton()
{ } /// <summary>
/// 公有的属性
/// </summary>
public static CommonSigleton Instance
{
get
{
if(instance == null)
{
instance = new CommonSigleton();
} return instance;
}
}
}

2.双重锁定实现(lock关键字)

    public class DoubLockSigleton
{
private static volatile DoubLockSigleton instance; /// <summary>
/// 辅助锁对象,本身没有意义
/// </summary>
private static object syncRoot = new Object(); /// <summary>
/// 构造方法改为Private
/// </summary>
private DoubLockSigleton()
{ } public static DoubLockSigleton Instance
{
get
{
if (instance == null)
{
lock (syncRoot)
{
if (instance == null)
instance = new DoubLockSigleton();
}
} return instance;
}
}
}

3.利用C#特性实现

    ///该类标记sealed阻止发生派生增加实例
public sealed class DotNetSigleton
{
//变量标记为 readonly,这意味着只能在静态初始化期间(此处显示的示例)或在类构造函数中分配变量。
//公共静态属性为访问实例提供了一个全局访问点。此外,由于构造函数是私有的,因此不能在类本身以外实例化
private static readonly DotNetSigleton instance = new DotNetSigleton(); //由于 Singleton 实例被私有静态成员变量引用,因此在类首次被对Instance属性的调用所引用之前,不会发生实例化。
private DotNetSigleton(){} public static DotNetSigleton Instance
{
get
{
return instance;
}
}
}

1.单件模式(Singleton Pattern)的更多相关文章

  1. 设计模式 - 单件模式&lpar;singleton pattern&rpar; 具体解释

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u012515223/article/details/28595349 单件模式(singleton ...

  2. C&num;设计模式——单件模式&lpar;Singleton Pattern&rpar;

    一.概述在软件开发过程中,我们有时候需要保证一个类仅有一个实例,比如在一个电脑用户下只能运行一个outlook实例.这时就需要用到单件模式.二.单件模式单件模式保证一个类仅有一个实例,并提供一个访问它 ...

  3. 设计模式----创建型型模式之单件模式&lpar;Singleton pattern&rpar;

    单件模式,又称单例模式,确保一个类只有一个实例,并提供全局访问点. 单件模式是比较简单且容易理解的一种设计模式.只有一个实例,通常的做法...TODO 类图比较简单,如下所示: 示例代码: 懒汉模式( ...

  4. 单件模式Singleton来控制窗体被重复或多次打开

    本文转载:http://blog.csdn.net/a0700746/article/details/4473796 一般在百度搜一下,会出来一下内容,看来很好用.Singleton很方便的一个用处就 ...

  5. 设计模式(二)单件模式Singleton(创建型)

    SINGLETON(单件)—对象创建型模式 几乎所有面向对象的程序中,总有一些类的对象需要是唯一的,例如,通过数据库句柄到数据库的连接是独占的.您希望在应用程序*享数据库句柄,因为在保持连接打开或关 ...

  6. &lbrack;MyBean-说明书&rsqb;关于插件的单件模式&lpar;singleton&rpar;&comma;插件的共享模式

    [说明] 单件模式是一种用于确保整个应用程序中只有一个类实例. 想想我们的系统中有哪些方面可以应用到单件模式,比如大家常说的连接(ADOConnection)共享,其实就是指的单件模式. [MyBea ...

  7. 说说设计模式~单件模式&lpar;Singleton&rpar;

    单件模式(Singleton)要求一个类有且仅有一个实例,并且提供了一个全局的访问点. 从概念上来研究一下它的实现,不考虑线程安全 1 public sealed class Singlton 2 { ...

  8. 夜话JAVA设计模式之单例模式(单件模式Singleton)

    单例模式也叫单件模式,就是确保一个类只有一个实例,并提供一个全局访问点. 设计成单例即把某个类设计成我们自己管理的单独实例,避免实例对象的重复创建,我们只有通过单例类的全局访问点获取实例. 下面来看金 ...

  9. java 设计模式 单例模式之饿汉模式&sol;懒汉模式 singleton pattern

    https://v.qq.com/x/page/e0364ung5zp.html 讲的不错, 关于 饿汉式单例模式 code Student 类: package com.test;//单例模式之   ...

随机推荐

  1. &lpar;UWP开发&rpar;更为合理的一种ListView下拉刷新&lpar;PullToRefresh&rpar;实现方法

    最近在做的一个项目需要用到下拉刷新,但是参考了现在网络上比较普遍的方法,觉得都不太好,因为要在外部套上一个SrollViewer,容易出现滚动错误.于是刚开始的时候就把思路定到了ListView内部的 ...

  2. Python for Infomatics 第12章 网络编程六(译)

    注:文章原文为Dr. Charles Severance 的 <Python for Informatics>.文中代码用3.4版改写,并在本机测试通过. 12.9 词汇表 Beautif ...

  3. python安装失败0x80240017

    安装KB2999226更新补丁后, 可以正常安装python3.5. 此更新包在vs2015的patch包里有.Microsoft下载中心也有,这里列出的适用于win7x86: Windows 7 更 ...

  4. css 样式大全

    字体属性:(font) 大小 {font-size: x-large;}(特大) xx-small;(极小) 一般中文用不到,只要用数值就可以,单位:PX.PD 样式 {font-style: obl ...

  5. padding-top、margin-top和top的区别

    padding-top:10px;是指容器内的内容距离容器的顶部有10个像素,是包含在容器内的: margin-top:10px;是指容器本身的顶部距离其他容器有10个像素,不包含在容器内: top: ...

  6. &lbrack;转&rsqb;Bypassing iPhone Code Signatures

    Source Link: http://www.saurik.com/id/8 Due to popular demand, I am putting some of the content I ha ...

  7. 201521123071 《JAVA程序设计》第十四周学习总结

    第14周作业-数据库 1. 本周学习总结 1.1 以你喜欢的方式(思维导图.Onenote或其他)归纳总结多数据库相关内容. 1.使用JDBC将Java程序与数据库连接 1.1注册驱动 Class.f ...

  8. Vue&period;js &plus; Webpack

    vue.js Vue.js是一个构建数据驱动的 web 界面的库.Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件 以上是Vue.js官方定义,故名思议,以数据驱动视 ...

  9. js如何实现类的继承

    方法一:借助构造函数实现继承 这种方法的缺点:原型链上的东西并没有被继承. 方法二:借助原型链实现继承 这种方法的缺点:改变了一个实例对象,另一个实例对象也跟着改变,因为s1.__proto__ == ...

  10. 利用maven将项目打包成一个可以运行的独立jar包

    目标:希望把Java项目打包成一个完整的jar包,可以独立运行,不需要再依赖其他jar包. 我们在用eclipse中mvn创建mvn项目的时候,选择非webapp,会默认的以jar打包形式,如下图: ...