内容简介:【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变量的实现》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 【C++】Delphi中类似C中static变量的实现
- 类似Github的webhook实现
- 类似 Qt 的 GOSP 发布修复更新
- ASP实现类似hashMap功能的类
- 使用 Reactor 完成类似 Flink 的操作
- PHP实现类似题库抽题效果
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
深度学习
[美] 伊恩·古德费洛、[加] 约书亚·本吉奥、[加] 亚伦·库维尔 / 赵申剑、黎彧君、符天凡、李凯 / 人民邮电出版社 / 2017-7-1 / 168
《深度学习》由全球知名的三位专家Ian Goodfellow、Yoshua Bengio 和Aaron Courville撰写,是深度学习领域奠基性的经典教材。全书的内容包括3个部分:第1部分介绍基本的数学工具和机器学习的概念,它们是深度学习的预备知识;第2部分系统深入地讲解现今已成熟的深度学习方法和技术;第3部分讨论某些具有前瞻性的方向和想法,它们被公认为是深度学习未来的研究重点。 《深度......一起来看看 《深度学习》 这本书的介绍吧!