关于,Singleton。

// Singleton

 

// Intent: "Ensure a class only has one instance, and provide a global

// point of access to it".

 

// For further information, read "Design Patterns", p127, Gamma et al.,

// Addison-Wesley, ISBN:0-201-63361-2

 

/* Notes:

 * If it makes sense to have only a single instance of a class (a so-called

 * singleton), then it makes sense to enforce this (to elimintate potential

 * errors, etc).

 *

 * A class based on the singleton design pattern protects its constructor,

 * so that only the class itself (e.g. in a static method) may instantiate itself.

 * It exposes an Instance method which allows client code to retrieve the

 * current instance, and if it does not exist to instantiate it. 

 */

 

namespace Singleton_DesignPattern

{

    using System;

 

    class Singleton

    {

        private static Singleton _instance;

 

        public static Singleton Instance()

        {

            if (_instance == null)

                _instance = new Singleton();

            return _instance;

        }

        protected Singleton() { }

 

        // Just to prove only a single instance exists

        private int x = 0;

        public void SetX(int newVal) { x = newVal; }

        public int GetX() { return x; }

    }

 

    ///

    ///    Summary description for Client.

    ///

    public class Client

    {

        public static int Main(string[] args)

        {

            int val;

            // can't call new, because constructor is protected

            Singleton FirstSingleton = Singleton.Instance();

            Singleton SecondSingleton = Singleton.Instance();

 

            // Now we have two variables, but both should refer to the same object

            // Let's prove this, by setting a value using one variable, and

            // (hopefully!) retrieving the same value using the second variable

            FirstSingleton.SetX(4);

            Console.WriteLine("Using first variable for singleton, set x to 4");

 

            val = SecondSingleton.GetX();

            Console.WriteLine("Using second variable for singleton, value retrieved = {0}", val);

            return 0;

        }

    }

}

 

你可能感兴趣的:(.NET,constructor,class,variables,access,object,system)