NewInstance

The proper way to create a singleton in Delphi is not to mess with constructors, but to override the NewInstance and FreeInstance methods.

When an object is created, the compiler firstly calls the NewInstance class method of that object and only then executes the constructor. The NewInstance method is virtual, and so we can easily override it in our singleton class.

The default implementation in TObject.NewInstance calls the InstanceSize method to get the number of bytes that are needed to store the new object, then calls GetMem to allocate that number of bytes, and in the end, it calls InitInstance to fill this memory with zeros.

Instead of all of that, we can change our overridden NewInstance method to always return the same ...

Get Hands-On Design Patterns with Delphi now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.