delphi 单例模式
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;
delphi 单例模式的更多相关文章
- delphi 单例模式实现
unit Unit2; interface uses System.SysUtils; type { TSingle } TSingle = class(TObject) private FStr: ...
- Delphi - 互斥对象下实现系统的单例模式
使用CreateMutex函数创建互斥对象 利用Windows系统函数CreateMutex(),找出当前系统是否已经存在指定进程的实例,如果没有则创建一个互斥体. CreateMutex函数原型如下 ...
- Delphi 设计模式:《HeadFirst设计模式》Delphi2007代码---单例模式之ChocolateBoiler[转]
1 2{<HeadFirst设计模式>之单例模式 } 3{ 编译工具: Delphi2007 for win32 } 4{ E-Mail : guzh-0417@163.com ...
- Delphi ThreadPool 线程池(Delphi2009以上版本适用)
http://blog.sina.com.cn/s/blog_6250a9df0101kref.html 在网上查找Delphi线程池,结果发现寥寥无几. 看了半天源代码,弄得一头雾水,觉得不容易理解 ...
- delphi 窗体的创建和释放
Delphi中的窗体分为模式窗体和无模式窗体.二者的区别在于,用户可以在无模式窗体和其他窗体之间切换.这样,用户就可以同时工作于一个应用程序的几个部分.Delphi中窗体的初始化有两种情况,动态创建, ...
- Elite Container DELPHI下的一个轻量级IoC对象容器
一.简介: Elite Container是DELPHI下的一个轻量级IoC对象容器(IoC:Inverse of Control,反转控制).它是参考了Java中的Spring框架(主要是配置文件的 ...
- C++实现线程安全的单例模式
在某些应用环境下面,一个类只允许有一个实例,这就是著名的单例模式.单例模式分为懒汉模式,跟饿汉模式两种. 首先给出饿汉模式的实现 template <class T> class sing ...
- 23种设计模式--单例模式-Singleton
一.单例模式的介绍 单例模式简单说就是掌握系统的至高点,在程序中只实例化一次,这样就是单例模式,在系统比如说你是该系统的登录的第多少人,还有数据库的连接池等地方会使用,单例模式是最简单,最常用的模式之 ...
- angular2系列教程(十)两种启动方法、两个路由服务、引用类型和单例模式的妙用
今天我们要讲的是ng2的路由系统. 例子
随机推荐
- IDEA开发spring boot应用时 application.yml 或 application.properties 自定义属性提示
在使用spring boot开发过程中,经常会定义一些应用自己的属性,直接写到application配置文件中使用@Value注解进行使用,这样使用也没有什么问题.不过我认为更优雅的方式是定义自己的属 ...
- 043、Java中逻辑运算之实现位与操作
01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...
- 030、Java中的求模计算
01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...
- yum 安装 tomcat
前言对于一个新安装的 centos 系统来说,是没有 tomcat 服务器的.用下面的命令可以查看 tomcat 服务的状态. systemctl status tomcat.service//或者 ...
- NO11 SSH故障排查思路和netstat命令
本章知识相关考试:1.企业场景面试题:Linux系统如何优化?2.企业场景面试题:SSH服务连不上,如何排查?记住回答技巧: 1 ping 2 telnet 客户端ssh工具:SecureCRT,x ...
- SpringBoot启动流程分析
前景提示 @ComponentScan 的处理都放在org.springframework.context.annotation.ConfigurationClassParser#doProcess ...
- P1002 写出这个数(Basic Level)
转跳点:
- 15.swoole学习笔记--异步写入文件
<?php //异步写入文件 $content="hello world"; swoole_async_writefile('2.txt',$content,function ...
- Python 中 对logging 模块进行封装,记录bug日志、日志等级
是程序产生的日志 程序员自定义设置的 收集器和渠道级别那个高就以那个级别输出 日志和报告的作用: 报告的重点在于执行结果(执行成功失败,多少用例覆盖),返回结果 日志的重点在执行过程当中,异常点,哪里 ...
- 123-PHP类构造函数
<?php class ren{ //定义人类 private $name; //定义成员属性 public function __construct($name){ //定义构造函数 $thi ...