//Delphi7以下均没有私有构造函数,当把构造函数写在Private中,在创建对象时,编译器会直接找到根类的Create来执行。所以一般都用NewInstance来实现单例。
NewInstance方法是在根类的Create中,只要在这个函数中判断实例是否存在,就OK了。
这样的话,前端调用时既可以用GetInstance或Create都可以实现单例
type
TConfig=class(TObject)
public
class function GetInstance():TConfig;
class function NewInstance: TObject; override;
procedure FreeInstance;override;
end;
implementation
var
config:TConfig=nil;
procedure TConfig.FreeInstance;
begin
inherited;
config:=nil;
end;
class function TConfig.GetInstance: TConfig;
begin
if not Assigned(config) then
config:=TConfig.Create();
Result:=config;
end;
class function TConfig.NewInstance: TObject;
begin
if not Assigned(config) then
config:=TConfig(inherited NewInstance);
Result:=config;
end;
Delphi中单例
最新推荐文章于 2021-01-25 08:42:17 发布