近日得闲,研究了一下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. 
|