单实例模式。
过去(D7)单实例经常这样做:
unit Unit2;
interface
type
TOneObject = class
public
constructor Create;
destructor Destroy; override;
end;
function AOneObject: TOneObject;
implementation
{ TOneObject }
var
FOneObject: TOneObject;
constructor TOneObject.Create;
begin
end;
destructor TOneObject.Destroy;
begin
inherited;
end;
function AOneObject: TOneObject;
begin
if not Assigned(FOneObject) then
FOneObject := TOneObject.Create;
Result := FOneObject;
end;
end.
======================================================
现在(XE+):
unit Unit3;
interface
type
TTwoObject = class
private
class var FDefaultTwoObject: TTwoObject;
class function GetDefaultTwoObject(const Value: TTwoObject): TTwoObject; static;
public
constructor Create;
destructor Destroy; override;
class property DefaultTwoObject: TTwoObject read GetDefaultTwoObject;
end;
implementation
{ TTwoObject }
constructor TTwoObject.Create;
begin
end;
destructor TTwoObject.Destroy;
begin
inherited;
end;
class function TTwoObject.GetDefaultTwoObject(const Value: TTwoObject): TTwoObject;
begin
if not Assigned(FDefaultTwoObject) then
FDefaultTwoObject := TTwoObject.Create;
Result := FDefaultTwoObject;
end;
end.
public
constructor Create();//创建时完成TCP连接和读取连接参数
destructor Destroy; override;
end;
var
tcpdll:TTCPDLL
procedure SendMsg(Msg: pchar);//发送数据包
....
procedure SendMsg(Msg: pchar);//发送数据包
begin
if not Assigned(TCPDLL) then
TCPDLL:=TTCPDLL.Create;
//Send MESSAGE code
end;