2        Singleton模式

2.1      概述

Singleton模式是用于确保一个特定的类有且仅有一个对象被实例化。

2.2      设计

那么如何保证只生成一个对象呢?我们都知道,对象的生成是通过构造方法实现的。在C#中,我们实例化对象是这样写的:

Student student = new Student() ;//生成学生对象

其实在类Student实例化中,它是调用类的构造方法:public Student() {}

对于方法,都有访问行的限制,那么类Student的构造方法Student()的可访问行是public,所以可以通过此方法实例化无数个对象。

我们要使用Singleton模式,使类有且仅有一个对象,就必须限制所有构造方法的可访问行,使不能通过new 操作实例化对象,然后我们再提供一个接口,通过这个接口保证有且仅有一个对象被示例化。

那么如何做到这点呢?思维是这样的:在实例化对象之前,先看看有没有对象已被实例化,如果没有就实例化,否则就调用已实例化的对象。这里就有一个问题:如何让其他对象知道有没有对象被实例化?也就是说需要把实例化的仅有一个对象放在一个所有“人”能“看”到的地方。很幸运的时,C#语法有一个声明支持这个做法:static。那就好办了,把实例化的对象先放在一个static的类私有变量中(私有是不让类外人员改动),要再实例化对象时就先看看这个变量,如果这个变量不为空,就调用它;如果为空就实例化一个对象,并放入该变量中。

2.3      实现

UML图:
设计模式——Singleton模式

示例代码为:

 1设计模式——Singleton模式using System;
 2设计模式——Singleton模式
 3设计模式——Singleton模式namespace Example
 4

相关文章: