科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道C#设计模式之Singleton

C#设计模式之Singleton

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

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

作者:ghost 来源:CSDN 2007年9月24日

关键字: ghost C# 设计模式 Singleton

  • 评论
  • 分享微博
  • 分享邮件
名称:Singleton
结构:
 
意图:
保证一个类仅有一个实例,并提供一个访问它的全局访问点。
 
适用性 :
  1. 当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。
  2. 当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。  
示例代码
// Singleton
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>
    /// Summary description for Client.
    /// </summary>
    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;
        }
    }
}


Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1669696

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章