内容简介:【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实现类似题库抽题效果
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Computational Advertising
by Kushal Dave、Vasudeva Varma / Now Publishers Inc / 2014
Computational Advertising (CA), popularly known as online advertising or Web advertising, refers to finding the most relevant ads matching a particular context on the Web. The context depends on the t......一起来看看 《Computational Advertising》 这本书的介绍吧!
CSS 压缩/解压工具
在线压缩/解压 CSS 代码
HTML 编码/解码
HTML 编码/解码