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

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

内容简介:编程模式单例模式中强调一个程序中只有一个类的实例。C++中用类的static成员和static方法实现。用Delphi中没有static关键字,用全局变量保存实例不是好的实现方式。Delphi中有类方法可直接调用。在类方法中使用const实现类似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;


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

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

不是为了快乐

不是为了快乐

宗萨蒋扬钦哲仁波切 / 姚仁喜 / 深圳报业集团出版社 / 2013-1 / 38.00元

前行修持是一套完整的实修系统,它既是一切佛法修持的根基,又囊括了所有修持的精华,以及心灵之道上所需的一切;既适合入门者打造学佛基本功,也是修行人需要终生修持的心法。书中除了实际的方法指导之外,还不断启发佛法的珍贵与修持的必要,并处处可见对学佛者的鼓舞和纠正,其最终的用心,是让我们踏上不间断的修持之路,真正转化我们僵硬、散乱和困惑的心。 在现代人看来,快乐,理应是最值得追求的目标。我们希望生活......一起来看看 《不是为了快乐》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

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

HEX HSV 互换工具