内容简介:编程模式单例模式中强调一个程序中只有一个类的实例。C++中用类的static成员和static方法实现。用Delphi中没有static关键字,用全局变量保存实例不是好的实现方式。Delphi中有类方法可直接调用。在类方法中使用const实现类似C的static成员。
编程模式单例模式中强调一个程序中只有一个类的实例。
C++中用类的static成员和static方法实现。
用Delphi中没有static关键字,用全局变量保存实例不是好的实现方式。Delphi中有类方法可直接调用。在类方法中使用const实现类似C的static成员。
TSingle = class(TObject)
private
protected
constructor CreateInstance;
class funtion GetInstance(Request: integer): TSingle;
public
constructor Create;
destructor Destroy; override;
class procedure ReleaseInstance;
class function SingleInstance: TSingle;
end;
implementation
constructor TSingle.Create;
begin
inherited Create;
raise Exception.CreateFmt('只能通过SingleInstance方法来创建和访问%s的实例!', [ClassName]);
end;
constructor TSingle.CreateInstance;
begin
inherited Create;
end;
destructor TSingle.Destroy;
begin
if GetInstance(0) = self then GetInstance(2);
inherited Destroy;
end;
class function TSingle.GetInstance(Request: integer): TSingle;
const FInstance: TSingle = nil;
begin
{
Request = 0 : 不做任何处理,供释放时使用
Request = 1 : 存在该类实例时使用该实例,不存在时创建之
Request = 2 :返回一个空指针,用于重置实例
}
case Request of
0: ;
1: if not Assigned(FInstance) then FInstance := CreateInstance;
2: FInstance := nil;
else
raise Exception.CreateFmt('%d是GetInstance()的非法参数调用', [Request]);
end;
result := FInstance;
end;
class procedure TSingle.ReleaseInstance;
begin
GetInstance(0).Free;
end;
Class function TSingle.SingleInstance: TSingle;
begin
result := GetInstance(1);
end;
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
与机器赛跑
[美]埃里克·布林约尔松(Erik Brynjolfsson)、[美]安德鲁·麦卡菲(Andrew McAfee) / 闾佳 / 2013-1-20 / 6.00
一场数字革命正在加速进行。 一些科幻小说里的场景已经在现实中发生:无人驾驶汽车开上了公路;智能设备能高效地翻译人类语言;人工智能系统在智力竞赛里击败了所有人类选手;工厂雇主开始购买更多的新机器,却不招新工人…… 这些例子都证明,数字技术正在快速地掌握原本只属于人类的技能,并深刻地影响了经济。虽然大多数影响是积极的:数字革新将提高效率、降低商品价格(甚至到免费),以及增加经济总量。 ......一起来看看 《与机器赛跑》 这本书的介绍吧!