用Delphi实现Singleton模式

原创 2006年05月17日 15:21:00

Singleton模式定义:
Singleton(一般译作单件或单态)模式,它是设计模式中比较简单而常用的模式。有些时候在整个应用程序中,会要求某个类有且只有一个实例,这个时候可以采用Singleton模式进行设计。 关于Singleton模式的详细介绍,请参见GOF的著作《设计模式》,俺比较节省纸张,不摘抄过来了。

实现方法:

Delphi中有两个方法是负责创建与销毁对象的:

NewInstance是负责创建对象分配对象内存空间,FreeInstance则负责清除对象实例并且释放占用的内存空间,具体这两个方法的实现过程可以参看System.pas中的代码。

我们还需要这两个变量:

Instance TSingleton对象的实例变量,Ref_Count则负责保存对象实例被创建的次数,以方便我们追踪对象的引用.

下面我们声明TSingleton对象:

 

我添加RefCount方法是为了能看到这个类的实际工作,通过这个方法可以查看对象的引用计数,但这个方法并非实现TSingleton对象所必须的方法。

那我们接下来就实现上面声明的三个方法:

 

 

上面的代码覆盖了NewInstance这个方法,只要判断TSingleton对象的实例已经存在,就直接返回对象实例,并增加对象的引用计数。同样我们覆盖了FreeInstance方法,只有当引用计数为零时,才真正的释放对象实例。这样的话在对象外部无论调用构造与析构方法多少次,真正创建与释放的只有一个对象实例。

上述代码在D 5,D6,D7均可正常使用,在D2005,D2006中对于Singleton模式还有更好的构造方法,这里就不继续探讨了。

测试代码:

[DELPHI]单例模式(singleton) 陈省

====================================================== 注:本文源代码点此下载 =============================...

单例模式(Singleton)的6种实现

  • 2017年11月02日 11:14
  • 1.17MB
  • 下载

C++完美实现Singleton模式

  • 2014年05月21日 13:04
  • 16KB
  • 下载

剑指offer 面试题2 Singleton模式 C++实现

参考: 1、题目来源《剑指offer 名企面试官精讲典型编程题 纪念版-何海涛 著》 2、C++设计模式——单例模式: http://www.jellythink.com/arch...

C++完美实现Singleton模式

  • 2016年08月01日 10:40
  • 102KB
  • 下载

Qt中实现单例模式(SingleTon)

转载自:http://www.cnblogs.com/codingmylife/archive/2010/07/14/1777409.html 单例模式分为“饥汉”和“饿汉”两种版本,也正是...

C++ 实现的singleton 模式

  • 2010年10月08日 16:13
  • 615B
  • 下载

C++用多种方式实现Singleton单例模式

题目:
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用Delphi实现Singleton模式
举报原因:
原因补充:

(最多只允许输入30个字)