12.2.1 RTL中的类构造函数
有一些RTL类已经利用了这一语言特性,比如Exception类定义了一个类构造函数(如下所示)和一个类析构函数:
delphiCopy code
class constructor Exception.Create;
begin
InitExceptions;
end;
InitExceptions过程之前在System.SysUtils单元的初始化部分中调用。
总的来说,我认为使用类构造函数和析构函数要比使用Unite的initialization和finalization更好。在大多数情况下,这只是一种语法糖,因此您可能不想回头更改现有代码。然而,如果面临初始化您永远不会使用的数据结构的风险(因为从不创建该类型的类),迁移到类构造函数将提供明显的优势。在一般库中,这很明显更经常发生,您不使用其中的所有功能,而不是在应用程序代码中。
注解 类构造函数的一种非常特定的用例是在泛型类的情况下。我将在专注于泛型的章节中涵盖这一点。
12.2.2 实现单例模式
有些类只需创建一个实例。单例模式(另一种非常常见的设计模式)就是要求这样做,并建议为该实例设置一个全局访问点。
单例模式有多种实现方式,一种经典的方式是将能够唯一访问实例的函数命名为 Instance。在许多情况下,这种实现方式也遵循懒惰初始化规则,因此程序启动时不会创建这个全局实例,只有第一次需要时才会创建。
在下面的实现中,我不仅利用了类数据、类方法,还利用了类析