delphi单例模式

unit Unit2;

interface

uses System.SysUtils;

type
  { TSingle }
  TSingle = class(TObject)
  private
    FStr: string;
  protected
  public
    constructor Create;
    class function GetInstance(): TSingle;
    class function NewInstance: TObject; override;
    procedure FreeInstance; override;

    property Str: string read FStr write FStr;
  published

  end;

implementation

var
  GlobalSingle: TSingle;
  { TSingle }
constructor TSingle.Create;
begin
  FStr := DateTimeToStr(Now);
end;

procedure TSingle.FreeInstance;
begin
  inherited;
  GlobalSingle := nil;
end;

class function TSingle.GetInstance: TSingle;
begin
  if not Assigned(GlobalSingle) then
  begin
    GlobalSingle := TSingle.Create();
  end;
  Result := GlobalSingle;
end;

class function TSingle.NewInstance: TObject;
begin
  if not Assigned(GlobalSingle) then
    GlobalSingle := TSingle(inherited NewInstance);
  Result := GlobalSingle;
end;

猜你喜欢

转载自blog.csdn.net/y281252548/article/details/81298212
今日推荐