科技行者

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

知识库

知识库 安全导航

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

C#设计模式之Singleton

  • 扫一扫
    分享文章到微信

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

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

来源:soft6 2008年5月22日

关键字: 模式 设计 C# Windows

  • 评论
  • 分享微博
  • 分享邮件
名称:Singleton

  结构:

  

  意图:

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

  适用性 :

  当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。

  当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。

  示例代码:

  // 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 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 = ", val);

  return 0;

  }

  }

  }

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

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

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