C#经典单例

 1 using System;
 2
 3 public class Singleton<T> where T : class, new()
 4 {
 5     private static T _Instance;
 6
 7     public static T Instance
 8     {
 9         get
10         {
11             if (Singleton<T>._Instance == null)
12             {
13                 Singleton<T>._Instance = Activator.CreateInstance<T>();
14             }
15             return Singleton<T>._Instance;
16         }
17     }
18
19     static Singleton()
20     {
21         Singleton<T>._Instance = Activator.CreateInstance<T>();
22     }
23
24     public static void CreateInstance()
25     {
26         if (Singleton<T>._Instance == null)
27         {
28             Singleton<T>._Instance = Activator.CreateInstance<T>();
29         }
30     }
31
32     public static void DestroyInstance()
33     {
34         if (Singleton<T>._Instance != null)
35         {
36             Singleton<T>._Instance = (T)((object)null);
37         }
38     }
39
40     public static T GetInstance()
41     {
42         if (Singleton<T>._Instance == null)
43         {
44             Singleton<T>._Instance = Activator.CreateInstance<T>();
45         }
46         return Singleton<T>._Instance;
47     }
48 }
时间: 2024-11-07 15:23:42

C#经典单例的相关文章

Scala 深入浅出实战经典 第79讲:单例深入讲解及单例背后的链式表达式

package com.parllay.scala.bestpractive import scala.reflect.runtime.universe import scala.reflect.runtime.universe.typeOf import com.parllay.scala.bestpractive.Scala /** * Created by richard on 15-9-5. * 第79讲:单例深入讲解及单例背后的链式表达式 */ object Scala class J

单例经典示例

package com.etc.jichu; public class Singleton { //初始化为null的单例,用关键字volatile(不稳定的)修饰 private static volatile Singleton single=null; //私有的构造方法 private Singleton(){} public static Singleton getSingleton() { //如果当前实例为null则创建对象 if(single==null) { synchroni

设计模式整理_单例设计模式

单例设计模式,它确保一个类只有一个实例,并提供一个全局访问点. 由于单例设计模式对应的类只能创建一个对象,因此它所对应的方法必须是static(不是static只有创建对象才能调用). 以下是单例模式的一个经典实现:采用了延迟加载对象的例子. public class Single1 { private static Single1 single; //利用一个静态变量来记录Single1的唯一实例,这里没有直接声明,采用了延迟加载模式. private Single1(){} //把构造器声明

Python全栈开发之9、面向对象、元类以及单例

前面一系列博文讲解的都是面向过程的编程,如今是时候来一波面向对象的讲解了 一.简介 面向对象编程是一种编程方式,使用 “类” 和 “对象” 来实现,所以,面向对象编程其实就是对 “类” 和 “对象” 的使用.类就是一个模板,模板里可以包含多个方法(函数),方法里实现各种各样的功能,,对象则是根据模板创建的实例,通过实例,对象可以执行类中的方法,每个对象都拥有相同的方法,但各自的数据可能不同. 二.类.对象和方法 在Python中,定义类是通过class关键字,class后面紧接着是类名,类名通常

java单例-积木系列

一步步知识点归纳吧,把以前似懂非懂,了解表面,知道点不知道面的知识归一下档. 懒汉式单例: 私有化构造函数,阻止外界实例话对象,调用getInstance静态方法,判断是否已经实例化. 为什么是懒汉,因为它是属于延迟加载这个实例的,也就是说不用到的时候,不实例化对象的. public class Singleton { private static Singleton instance; private Singleton (){} public static Singleton getInst

有一鲜为人知的单例写法-ThreadLocal

还有一鲜为人知的单例写法-ThreadLocal 源码范例 当我阅读FocusFinder和Choreographer的时候,我发现这两类的单例实现和我们平常用双重检查锁很不一样.而是用来一个ThreadLocal,这个也可以实现单例啊,那这个与双重检查锁实现的单例有什么区别呢? 1.FocusFinder /** * The algorithm used for finding the next focusable view in a given direction * from a view

【java设计模式】之 单例(Singleton)模式

1. 单例模式的定义 单例模式(Singleton Pattern)是一个比较简单的模式,其原始定义如下:Ensure a class has only one instance, and provide a global point of access to it. 即确保只有一个实例,而且自行实例化并向整个系统提供这个实例.单例模式的通用类如下图所示: Singleton类称为单例类,通过使用private的构造函数确保了在一个应用中只产生一个实例,并且是自行实例化的(在Singleton中

C#中的简单工厂和单例

下面首先来说说简单工厂 举个例子: 首先是父类 public abstract class Pizza { public abstract string Info(); } } 子类 public class CheesePizza:Pizza { public override string Info() { return "您好,奶酪比萨成功订购"; } } 下一个子类 public class PGPizza:Pizza { public override string Info

两种设计模式(2)==&gt;&gt;&quot;单例&quot;

所谓“单例”: 单例模式是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单例的特殊类.通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源.如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案. C#中的例子: 转:http://www.cnblogs.com/xun126/archive/2011/03/09/1970807.html 一.经典模式: public class Singleton { private