Delphi for .net中Singleton模式的实现

近日得闲,研究了一下Delphi for .net Preview3,用它实现了在传统的Delphi中实现起来比较复杂的Singleton设计模式

文件如下:

//单元文件1

unit Sayes.RD.Singleton;

interface

type
TSingleton = class
**strict private
class var **
instance: TSingleton;
class constructor Create;
public
class var
I: Integer;
s: String;
class function GetInstance(): TSingleton; static;
end;

implementation

class constructor TSingleton.Create();
begin
i := 0;
s := 'In Singleton Class constructor';
end;

class function TSingleton.GetInstance(): TSingleton;
begin
if instance = nil then
begin
instance := TSingleton.Create;
end;

GetInstance := instance;
end;

end.

//单元文件2

unit Sayes.RD.Client;

interface

uses Sayes.RD.Singleton;

type
TClient = class
procedure ExportText();
constructor Create();
end;

implementation

procedure TClient.ExportText();
var
a: Sayes.RD.Singleton.TSingleton;
b: Sayes.RD.Singleton.TSingleton;
begin
a := TSingleton.GetInstance;
a.i := a.i + 1;
WriteLn(a.i);

a.s := 'ssssssss';
Writeln(a.S);

b := TSingleton.GetInstance;
b.i := a.i + 1;
WriteLn(b.i);
Writeln(b.s);
end;

constructor TClient.Create();
begin
inherited;
end;

end.

//项目文件

program Singleton;

uses
Sayes.RD.Client in 'Sayes.RD.Client.pas';
var
Client: TClient;
begin
Client := TClient.Create();
Client.ExportText;
end.

Published At
Categories with Web编程
comments powered by Disqus