Singleton Pattern in CSharp

Singleton Pattern in CSharp
Level Author
Beginner Kunal Cheda

Singleton assures that there is one and only one instance of the class and provides a global point of access to it.There are number of cases in programming where you need to make sure that there can be one and only one instance of a class e.g Window Manager,Print Spooler etc.

Points to Note in the Example Constructor of Class B is private not allowing other classes to Create the Instance. Class B has a private static variable(x) which will have the one and one Instance of the Class B, and can be accessed through Static method GetB. If GetB is accessed for the first time x will be null ,and will create the Instance and return x, from next requests to GetB method it will simply return x.

Save the file as Singleton.cs, Compile C:\>csc Singleton.cs and Run C:\>Singleton

CODE

Singleton.cs

using System;
class A
{
             public static void Main(String [] args)
            {
                    B m = B.GetB();
                    m.j=100; //make changes to instance variable j
                    Console.WriteLine(m.j);
                    B x = B.GetB();  

                    //x.j print's 100 which means that there is one and only one Instance
                    Console.WriteLine(x.j);  

}
}

class B
{
              private static B x;
              public int j= 0;
              private B()  
              {
              }
              public static B GetB()
             {
                      if(x==null)
                     {
                            x=new B();
                     }
                      return x;
              }
}

时间: 2024-11-02 02:32:14

Singleton Pattern in CSharp的相关文章

javascript设计模式交流(一) :Singleton Pattern

javascript|设计  即使是简单的脚本语言,应用良好的模式可以得到非常"优美"的代码和较高的效率.尤其是对于交互要求较高的B/S系统,非常有必要用设计模式来优化代码. 单件模式(Singleton Pattern)是一种非常基本和重要的创建型模式."单件"的职责是保证一个类有且只有一个实例,并提供一个访问它的全局访问点.在程序设计过程中,有很多情况下需要确保一个类只能有一个实例. 传统的编程语言中为了使一个类只有一个实例,最容易的方法是在类中嵌入静态变量,并

Implementing the Singleton Pattern in C#

Implementing the Singleton Pattern in C#view auther's website The singleton pattern is one of the best-known patterns in software engineering. Essentially, a singleton is a class which only allows a single instance of itself to be created, and usuall

设计模式之单件模式(Singleton Pattern )

设计 单件模式 Singleton Pattern Singleton 模式,它包含在创造性模式系列中. 创造性模式指示如何以及何时创建对象.Singleton 模式可以保证一个类有且只有一个实例,并提供一个访问它的全局访问点.在程序设计过程中,有很多情况需要确保一个类只能有一个实例.例如,系统中只能有一个窗口管理器.一个打印假脱机,或者一个数据引擎的访问点.PC机中可能有几个串口,但只能有一个COM1实例. 其结构如下: 我们可以定义一个Spooler类,实现Singleton 模式 Publ

解读设计模式----单例模式(Singleton Pattern)

单例模式可以保证一个类有且只有一个实例,并提供一个访问它的全局访问点.在程序设计中,有很多情况需要确保一个类只能有一个实例.从这句话可以看出,Singleton模式的核心:如何控制用户使用new对一个类的实例构造器的任意调用.如何绕过常规的构造器,提供一种机制来保证一个类只有一个实例?这应该是类设计者的责任,而不是使用者的责任. 一.单例模式意图 保证一个类有且只有一个实例,并提供一个访问它的全局访问点. 二.单例模式UML图(该图来至http://www.dofactory.com/) 三.示

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

一.单例模式简介(Brief Introduction) 单例模式(Singleton Pattern),保证一个类只有一个实例,并提供一个访问它的全局访问点.单例模式因为Singleton封装它的唯一实例,它就可以严格地控制客户怎样访问它以及何时访问它. 二.解决的问题(What To Solve) 当一个类只允许创建一个实例时,可以考虑使用单例模式. 三.单例模式分析(Analysis)1.单例模式结构 Singleton类,定义一个私有变量instance;私有构造方法Singleton(

.NET设计模式:单件模式(Singleton Pattern)

概述 Singleton模式要求一个类有且仅有一个实例,并且提供了一个全局的访问点.这就提出了一个问题:如何绕过常规的构造器,提供一种机制来保证一个类只有一个实例?客户程序在调用某一个类时,它是不会考虑这个类是否只能有一个实例等问题的,所以,这应该是类设计者的责任,而不是类使用者的责任. 从另一个角度来说,Singleton模式其实也是一种职责型模式.因为我们创建了一个对象,这个对象扮演了独一无二的角色,在这个单独的对象实例中,它集中了它所属类的所有权力,同时它也肩负了行使这种权力的职责! 意图

java设计模式之单例模式(Singleton pattern)

单例模式的定义: Singleton pattern restricts the instantiation of a class and ensures that only one instance of the class exists in the java virtual machine. The singleton class must provide a global access point to get the instance of the class.        限制一个

.NET设计模式-单件模式(Singleton Pattern)

单件模式(Singleton Pattern) --.NET设计模式系列之二 Terrylee,2005年12月07日 概述 Singleton模式要求一个类有且仅有一个实例,并且提供了一个全局的访问点.这就提出了一个问题:如何绕过常规的构造器,提供一种机制来保证一个类只有一个实例?客户程序在调用某一个类时,它是不会考虑这个类是否只能有一个实例等问题的,所以,这应该是类设计者的责任,而不是类使用者的责任. 从另一个角度来说,Singleton模式其实也是一种职责型模式.因为我们创建了一个对象,这

JavaScript设计模式学习(四)单件(Singleton Pattern)

  单件是JavaScript中最基本.最有用的设计模式,而你今后也会经常的使用这个模式.通过单件,我们可以把统一到一个逻辑单元中并且提供一个唯一的入口,这就保证你所有的引用都是用的这个全局资源.   单件的用途有:一.提供一个Namespacing.二.提供一种被称为branching的技术.   单件的基本形式:   /* Basic Singleton Pattern */ var Map = {     name:"Map G",     createdate:"20