delphi 单例模式
2024-10-08 18:34:57
unit Singleton;
(*
单例模式适用于辅助类, 一般伴随于单元的生命周期
*)
interface
uses SysUtils; type
TSingleton = class
public
class function NewInstance : TObject; override;
class function GetInstance : TSingleton;
destructor Destroy; override;
procedure FreeInstance; override; function Address : integer;
end; implementation
var
FSingleton : TSingleton = nil;
FCanFree : Boolean; { TSingleton }
function TSingleton.Address: integer;
begin
Result := Integer(Self);
end; destructor TSingleton.Destroy;
begin
inherited;
end; procedure TSingleton.FreeInstance;
begin
if not FCanFree then Exit;
inherited FreeInstance;
FSingleton := nil;
end; class function TSingleton.GetInstance: TSingleton;
begin
if not Assigned(FSingleton) then
begin
FSingleton := TSingleton.Create;
end;
Result := FSingleton;
end; class function TSingleton.NewInstance: TObject;
begin
if not Assigned(FSingleton) then
begin
FSingleton := TSingleton(inherited NewInstance);
end;
Result := FSingleton;
end; initialization
FSingleton := TSingleton.Create; finalization
FCanFree := True;
if Assigned(FSingleton) then
begin
FSingleton.Free;
FSingleton := nil;
end; end. uses Singleton; procedure TForm1.btn1Click(Sender: TObject);
var
vTest, vTest2 : TSingleton;
begin
vTest := TSingleton.Create;
ShowMessage(IntToStr(vTest.Address)); vTest2 := TSingleton.Create;
ShowMessage(IntToStr(vTest2.Address)); // vTest.free;
FreeAndNil(vTest);
vTest2.free;
end;
最新文章
- [转]XSS现代WAF规则探测及绕过技术
- html尖角提示框的实现
- ACCP7.0-S2-复习自测-15测试分析
- MCS51系列单片机实用技术部分课件
- Js获取当前日期时间及时间相关操作
- ubuntu系统软件
- MVC-登录并设置角色
- 手游:cocos2d-x3.0 移植 wp8 开发 各种 “蛋疼”问题的汇总
- ggts下载地址
- Linux性能统计工具
- HQL查询——查询返回对象类型分析
- Oracle子查询中any、some、all之间的区别
- DVWA安装问题(phpStudy)
- 华为云(ECS)-linux服务器中-Ubuntu图形界面安装-解决root登录受限-VNCviwer/Teamviwer远程访问教程
- tomcat多端口配置
- ubuntu 14.04 上配置vlc组播源
- 【托业】【新托业TOEIC新题型真题】学习笔记12-题库八-P7
- Even Odds (java)
- os 模块 和 os模块下的path模块
- HMM条件下的 前向算法 和 维特比解码