解读设计模式----单例模式(Singleton Pattern)

单例模式可以保证一个类有且只有一个实例,并提供一个访问它的全局访问点.在程序设计中,有很多情况需要确保一个类只能有一个实例.从这句话可以看出,Singleton模式的核心:如何控制用户使用new对一个类的实例构造器的任意调用。如何绕过常规的构造器,提供一种机制来保证一个类只有一个实例?这应该是类设计者的责任,而不是使用者的责任。

一、单例模式意图

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

二、单例模式UML图(该图来至http://www.dofactory.com/)

三、示例解说单例模式

看看下面这个简单的示例: 

1namespace DesignPattern.Singleton
2{
3  public class Singleton
4  {
5    //静态私有属性
6    private static Singleton instance;
7
8    /// <summary>
9    /// 私有构造器--让类的使用者调用不到此构造器
10    /// </summary>
11    private Singleton()
12    { }
13
14    public static Singleton Instance
15    {
16      get
17      {
18        if (instance == null)
19        {
20          instance = new Singleton();
21        }
22        return instance; //返回的总是第一次实例的对象
23      }
24    }
25  }
26
27  //测试类
28  class TestSingleton
29  {
30    public static void Main2(string[] args)
31    {
32      Singleton t1 = Singleton.Instance;
33      Singleton t2 = Singleton.Instance;
34      Console.WriteLine(object.ReferenceEquals(t1, t2) == true);
35    }
36  }
37}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索实例
, instance
, 单例模式
, singleton
, 模式
, 构造器
, 一个
构造器模式
singleton单例模式、singleton pattern、singleton模式、java singleton模式、c singleton模式,以便于您获取更多的相关知识。

时间: 2024-11-05 06:05:43

解读设计模式----单例模式(Singleton Pattern)的相关文章

.Net设计模式实例之单例模式( Singleton Pattern)

一.单例模式简介(Brief Introduction) 单例模式(Singleton Pattern),保证一个类只有一个实例,并提供一个访问它的全局访问点.单例模式因为Singleton封装它的唯一实例,它就可以严格地控制客户怎样访问它以及何时访问它. 二.解决的问题(What To Solve) 当一个类只允许创建一个实例时,可以考虑使用单例模式. 三.单例模式分析(Analysis)1.单例模式结构 Singleton类,定义一个私有变量instance;私有构造方法Singleton(

php设计模式——单例模式(Singleton)的常见应用场景

单例模式(Singleton)也叫单态模式,是设计模式中最为简单的一种模式,甚至有些模式大师都不称其为模式,称其为一种实现技巧,因为设计模式讲究对象之间的关系的抽象,而单例模式只有自己一个对象,也因此有些设计大师并把把其称为设计模式之一. 这里又不具体讲如何实现单例模式和介绍其原理(因为这方便的已经有太多的好文章介绍了),如果对单例模式不了解的可以先看下:http://terrylee.cnblogs.com/archive/2005/12/09/293509.html .当然也可以自己搜索.

解读设计模式----适配器模式(Adapter Pattern)

在金庸笔下,三大神功都是难得之宝,多少人为得到他而......,仔细的分析下这三大神功,还是北冥较好,呵呵.我们从软件设计的角度来看,这不知算不算得上是一种复用(功力复用)的思想,只不过有点残忍罢.而在软件设计领域里,"复用"在某些时候也会出现很多问题,比如平台不兼容,开发语言不同或是接口不同等多种原因,弄得不好会不会出现既浪费了别人的现有资源,而自己的系统又无法完成呢?这有点像吸星----损人又损己. 企图将设计做好,就能够一劳永逸地坐享其成,这样的愿望就好上面所提到的吸星神功一般,

解读设计模式----装饰模式(Decorator Pattern)

装饰模式(Decorator)也叫包装器模式(Wrapper).以"装饰"的含义生动形象地描绘了"动态地给一个对象添加一些额外的职责"的意图.GOF在<设计模式>一书中给出的定义为:动态地给一个对象添加一些额外的职责.装饰模式充分利用了继承和聚合的优势,创造出无与论比的设计美学.就增加功能来说,Decorator模式相比生成子类更为灵活. UML图: 一.使用Decorator模式的动机 现在有这样一个场景,要求我们为一个对象动态添加新的职责,这个职责并

.Net 单例模式(Singleton)

单例模式的意思就是只有一个实例.单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.这个类称为单例类   每台计算机可以有若干个打印机,但只能有一个Printer Spooler, 以避免两个打印作业同时输出到打印机中.每台计算机可以有若干传真卡,但是只应该有一个软件负责管理传真卡,以避免出现两份传真作业同时传到传真卡中的情 况.每台计算机可以有若干通信端口,系统应当集中管理这些通信端口,以避免一个通信端口同时被两个请求同时调用. 问题描述:         单例模式 Si

.Net 单例模式(Singleton)_实用技巧

每台计算机可以有若干个打印机,但只能有一个Printer Spooler, 以避免两个打印作业同时输出到打印机中.每台计算机可以有若干传真卡,但是只应该有一个软件负责管理传真卡,以避免出现两份传真作业同时传到传真卡中的情况.每台计算机可以有若干通信端口,系统应当集中管理这些通信端口,以避免一个通信端口同时被两个请求同时调用. 问题描述:         单例模式 Singleton Pattern 问题解决: (1)单例模式简介: Singleton模式要求一个类有且仅有一个实例,并且提供了一个

java设计模式之单例模式(Singleton pattern)

单例模式的定义: Singleton pattern restricts the instantiation of a class and ensures that only one instance of the class exists in the java virtual machine. The singleton class must provide a global access point to get the instance of the class.        限制一个

javascript设计模式交流(一) :Singleton Pattern

javascript|设计  即使是简单的脚本语言,应用良好的模式可以得到非常"优美"的代码和较高的效率.尤其是对于交互要求较高的B/S系统,非常有必要用设计模式来优化代码. 单件模式(Singleton Pattern)是一种非常基本和重要的创建型模式."单件"的职责是保证一个类有且只有一个实例,并提供一个访问它的全局访问点.在程序设计过程中,有很多情况下需要确保一个类只能有一个实例. 传统的编程语言中为了使一个类只有一个实例,最容易的方法是在类中嵌入静态变量,并

.NET设计模式:单件模式(Singleton Pattern)

概述 Singleton模式要求一个类有且仅有一个实例,并且提供了一个全局的访问点.这就提出了一个问题:如何绕过常规的构造器,提供一种机制来保证一个类只有一个实例?客户程序在调用某一个类时,它是不会考虑这个类是否只能有一个实例等问题的,所以,这应该是类设计者的责任,而不是类使用者的责任. 从另一个角度来说,Singleton模式其实也是一种职责型模式.因为我们创建了一个对象,这个对象扮演了独一无二的角色,在这个单独的对象实例中,它集中了它所属类的所有权力,同时它也肩负了行使这种权力的职责! 意图