这里介绍C#实现Singleton模式,任何编写过MFC应用的开发人员(不管编写的应用是如何的小)都知道什么是Singleton。Singleton是类的唯一实例。

C#言语仍是比较常见的东西,这儿咱们首要介绍C#完成Singleton形式,包含介绍C#不支持大局变量,但仍是有可能在某个办法的一开始就在堆上创立了一个目标并直到好久今后才运用它。等方面。

C#完成Singleton形式详解(singleton)  C#实现Singleton模式 第1张

C#完成Singleton形式

任何编写过MFC运用的开发人员(不论编写的运用是怎么的小)都知道什么是Singleton。Singleton是类的***实例。运用MFC时,从CWinApp派生的运用类的大局实例便是Singleton。当然,在MFC运用中,虽然规则不允许创立运用类的第二个实例,可是并没有什么能够阻挠你那么做。在这种情况下,当你需求某个特定的类表现出Singleton行为时,一个更好的代替计划是让这个类自己担任确保只会被创立一个而且只要一个实例。再回到MFC,咱们知道确保运用类实例的***性的职责被留给了开发运用的程序员,他(她)们有必要当心不要创立运用类的第二个实例。

现在来看看下面所示的类。Singleton的拜访被局限于有必要经过静态办法Instance。大都情况下,Singleton应该具有大局可见性,这可经过将其创立办法public来完成。和用大局变量模仿Singleton不同,这种形式能够避免创立出剩余的实例,一起兼具大局可见性。留意,该类的结构器被置为private,这就意味着没有任何办法能够绕过静态办法Instance来直接创立类的实例。

  1. classSingleton
  2. {
  3. privatestaticSingletonsingleton=null;
  4. publicstaticSingletonInstance()
  5. {
  6. if(null==singleton)
  7. singleton=newSingleton();
  8. returnsingleton;
  9. }
  10. privateSingleton()
  11. {
  12. }
  13. }

C#完成Singleton形式的效果还不止于此,尤其是能够将其扩展,以创立类的可变数量的实例。假定有一个运用,当需求履行特定使命时就需求调度一个工作者线程。考虑到节省系统资源,咱们运用Singleton来完成这个线程类。不久,需求Singleton线程处理的使命变得密布起来,假如咱们决议扩展这个运用,咱们能够很方便地添加工作者线程的数量,由于线程的创立和对它们的拜访授权的一切逻辑都被界说在一个类中。

C#完成Singleton形式的别的一个长处是Singleton的创立能够被延迟到真实需求的时分。不论是否需求,大局变量一开始就被创立,但这个大局目标并不一定是一直都需求的。C#不支持大局变量,但仍是有可能在某个办法的一开始就在堆上创立了一个目标并直到好久今后才运用它。果真如此的话,Singleton形式为这种事例供给了一个高雅的解决计划。
别的,作为一个东西,在Singleton形式的完成上,C#优于C++,虽然这个长处很奇妙,但肯定重要。根据C++的完成需考虑Singleton带来的一些和生命期办理有关的扎手问题,而在C#中则由运行时主动处理。这个长处是有意义的,在Singleton形式的C#完成版别中,你只需确保在需求Singleton的时分,你具有一个活的引证即可。

C#示例:

  1. usingSystem;
  2. classSingleton
  3. {
  4. privatestaticSingletonsingleton=null;
  5. publicstaticSingletonInstance()
  6. {
  7. if(null==singleton)
  8. singleton=newSingleton();
  9. returnsingleton;
  10. }
  11. privateSingleton()
  12. {
  13. }
  14. }
  15. classApplication
  16. {
  17. publicstaticvoidMain()
  18. {
  19. Singletons1=Singleton.Instance();
  20. //Singletons2=newSingleton();//过错:结构器不行拜访
  21. Singletons2=Singleton.Instance();
  22. if(s1.Equals(s2))//引证持平
  23. Console.WriteLine("Instancesareidentical");
  24. }
  25. }

【修改引荐】

  1. C#运用sqlserver存储浅析
  2. 由C++转向C#简略介绍
  3. C# oledbconnection办法浅谈
  4. 数据库常用C#代码概述
  5. C#调用ImOK学习笔记
转载请说明出处
知优网 » C#完成Singleton形式详解(singleton)

发表评论

您需要后才能发表评论