[Zope-dev] implementing zope.component 4.0
Martin Aspeli
optilude+lists at gmail.com
Tue Dec 1 09:38:40 EST 2009
Martijn Faassen wrote:
> I don't like the word singleton very much either. Singleton in the
> Design Patterns book has a very particular implementation that is
> criticized by a lot of developers and in particular that particular
> pattern is very uncommon in the Python world (people just use globals).
> I think introducing the term would pull in all that baggage to a
> newcomer. Just type in 'singleton' in Google and you'll get the
> wikipedia definition:
>
> In software engineering, the singleton pattern is a design pattern
> that is used to restrict instantiation of a class to one object.
>
> Utility classes are *not* restricted to a single instantiation. Now we
> can argue successfully that's an extension of the singleton principle,
> but then we've lost a lot of people already who thought they knew (or
> went to lookup) what the word "singleton" means.
For the record, I normally use the singleton analogy to explain unnamed
global utilities. Perhaps that's bad, though I find it works pretty
well. It'd probably be more accurate to use the terms you did, an
"extension of the singleton principle", but as you say, it just adds
more complexity.
To me, the Singleton pattern says, "each time you ask for this, you get
the same object". That's a little bit different from "this class can
only be instantiated once". I think the important part of the design
pattern is the shared instance (e.g. to conserve resources or to
implement some kind of shared counting/tracking), not the restrictions
on instantiation.
I'm certainly -1 on using the term in the ZCA. I think changing our
nomenclature would be terrible for the same reasons I think changing (as
opposed to extending/improving) our API would be terrible. Utilities are
in one way a more specific concept (due to the lookup semantics) and in
another way a more generic concept (since named utilities can be used to
implement a registry of homogenous objects).
Martin
--
Author of `Professional Plone Development`, a book for developers who
want to work with Plone. See http://martinaspeli.net/plone-book
More information about the Zope-Dev
mailing list