【C++】Delphi中类似C中static变量的实现

栏目: 编程语言 · 发布时间: 7年前

内容简介:【C++】Delphi中类似C中static变量的实现

编程模式单例模式中强调一个程序中只有一个类的实例。

C++中用类的static成员和static方法实现。

用Delphi中没有static关键字,用全局变量保存实例不是好的实现方式。Delphi中有类方法可直接调用。在类方法中使用const实现类似C的static成员。

TSingle = class(TObject)

private

protected

constructor CreateInstance;

class funtion GetInstance(Request: integer): TSingle;

public

constructor Create;

destructor Destroy; override;

class procedure ReleaseInstance;

class function SingleInstance: TSingle;

end;

implementation

constructor TSingle.Create;

begin

inherited Create;

raise Exception.CreateFmt('只能通过SingleInstance方法来创建和访问%s的实例!', [ClassName]);

end;

constructor TSingle.CreateInstance;

begin

inherited Create;

end;

destructor TSingle.Destroy;

begin

if GetInstance(0) = self then GetInstance(2);

inherited Destroy;

end;

class function TSingle.GetInstance(Request: integer): TSingle;

const FInstance: TSingle = nil;

begin

{

Request = 0 : 不做任何处理,供释放时使用

Request = 1 : 存在该类实例时使用该实例,不存在时创建之

Request = 2 :返回一个空指针,用于重置实例

}

case Request of

0: ;

1: if not Assigned(FInstance) then FInstance := CreateInstance;

2: FInstance := nil;

else

raise Exception.CreateFmt('%d是GetInstance()的非法参数调用', [Request]);

end;

result := FInstance;

end;

class procedure TSingle.ReleaseInstance;

begin

GetInstance(0).Free;

end;

Class function TSingle.SingleInstance: TSingle;

begin

result := GetInstance(1);

end;


以上所述就是小编给大家介绍的《【C++】Delphi中类似C中static变量的实现》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

计算机组成:结构化方法

计算机组成:结构化方法

坦嫩鲍姆 / 刘卫东 / 人民邮电出版社 / 2006-1 / 65.00元

本书采用结构化方法来介绍计算机系统,书的内容完全建立在“计算机是由层次结构组成的,每层完成规定的功能”这一概念之上。作者对本版进行了彻底的更新,以反映当今最重要的计算机技术以及计算机组成和体系结构方面的最新进展。书中详细讨论了数字逻辑层、微体系结构层、指令系统层、操作系统层和汇编语言层,并涵盖了并行体系结构的内容,而且每一章结尾都配有丰富的习题。 本书适合作为计算机专业本科生计算机组......一起来看看 《计算机组成:结构化方法》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具