方法一:通过函数访问对象,如对象未创建,则自动创建,并返回该对象,示例:
unit Unit1;
interface
uses System.SysUtils;
type
TSample = class
end;
function Sample: TSample;
implementation
var
_Sample: TSample;
function Sample: TSample;
begin
if _Sample = nil then _Sample := TSample.Create; //未创建则自动创建
Result := _Sample;
end;
initialization
finalization
if _Sample <> nil then FreeAndNil(_Sample); //销毁对象
end.
方法二:声明公共变量,在单元初始化时建立对象,示例:
unit Unit3;
interface
uses System.SysUtils;
type
TSample = class
end;
var
Sample: TSample;
implementation
initialization
Sample := TSample.Create; //单元被引用时创建对象
finalization
if Sample <> nil then FreeAndNil(Sample); //销毁对象
end.
两种方法区别在于,方法一是在对象被实际调用时,才进行创建,方法二是在程序初始化时创建,无论实际是否调用到,都会创建对象,从性能上考虑,方法一更灵活一些。