== Quote from Ali Çehreli ([email protected])'s article
> Justin Johansson wrote:
> > Which language out of C++, D and Java does this classical
> > "GoF" (gang-of-four***) design pattern best?
> Are we still talking singleton? I thought that it is considered an
> anti-pattern already. :)
> As a teaser: What problem does it solve that can't be solved by creating
> just one object of a type?
> Ali
> "Forgive Me Father, for I Have Singleton’ed" - Kevlin Henney

Creating that one object lazily, tracking whether you've created one already, 
and
providing an access point for that object.

Frankly, I don't see what's so bad about global variables and singletons per se.
I definitely agree with the consensus that the kind of action at a distance that
they cause if used to share frequently mutated state between distant parts of a
program is evil.  However, there are a decent number of use cases that don't 
lead
to this:

1.  Storing program parameters that are set at start up from the command line, a
configuration file, etc. and are then treated as constants for the duration of 
the
"meat" of the program.  IMHO this is more like having a global constant, even if
it's only const by convention and not enforced as such by the compiler.

2.  As a performance optimization, they're useful for recycling scratch space or
objects that are expensive to create (though usually you'd want a thread-local
Singleton in these cases, or possibly a function-local static variable).

Reply via email to