Csharp/CSharp Tutorial/Design Patterns/Singleton Pattern
Singleton Pattern
<source lang="csharp">using System; public class SingletonClass {
private static SingletonClass instance; static SingletonClass() { instance = new SingletonClass(); } private SingletonClass() { } public static SingletonClass Instance { get { return instance; } } public void SomeMethod1() { } public void SomeMethod2() { }
} public class MainClass {
public static void Main() { SingletonClass s = SingletonClass.Instance; s.SomeMethod1(); SingletonClass.Instance.SomeMethod2(); }
}</source>
Singleton Pattern 2
<source lang="csharp">using System;
class Client { static void Main(string[] args) { try{ Engine eng = Engine.GetEngine(); }catch (Exception e){ Console.WriteLine(e.Message); } try{ Engine eng = Engine.GetEngine(); }catch (Exception e){ Console.WriteLine(e.Message); } } } sealed class Engine { private static bool instanceFlag = false; public static Engine GetEngine() { if (!instanceFlag) { instanceFlag = true; return new Engine(); }else{ throw new Exception("An engine has already been created!"); } } private Engine() { Console.WriteLine("An Engine"); } }</source>