# from Paul LeoNerd Evans
# on Thursday 18 January 2007 02:40 pm:
>> Class::FactoryFactory ?
>>
>> Class::ClassFactory ?
>
>See... I had a long chat on IRC about this. My upshot was that, an
> object in this class, is a factory.
Yes, you are building a factory. Its purpose is to construct objects of
different classes. Aside: This is why I hate OO nomenclature -- a
physical factory doesn't turn out multitudes of different kinds of
things (at least not without massive retooling), it turns out
multitudes of one kind of thing. Should have called it a shop or a
fabricator, or maybe a prototype manufacturer (but wait, we used
"prototype" to mean blueprint... ah crap.)
>Consider e.g. GTK::Window. We don't call that class, a factory.
Right, ignore the FactoryFactory suggestion.
>Ergo, if we add one more level of indirection, we should add one more
>"Factory" name:
I'm not sure I follow the "one more" part of that. You only have one
level of indirection, right?
> $factory = Class::SomethingFactory->new(...);
> $instance = $factory->new_instance(...);
Taking away the new_instance bit for a second, and doing less under the
hood, couldn't it also be expressed as something like:
my $factory = Class::ClassFactory->new(...);
my $foo_class = $factory->class_for(...);
# $foo_class is now a string like "GTK::Window"
# or the name of a dtRdr::Book subclass of some sort, no?
my $foo = $foo_class->new(...);
But, ClassFactory implies that some sort of dynamic class composition or
construction is going on behind the scenes. Maybe that's the plan.
If not, maybe it really isn't a factory, but more of a finder?
Class::PluginFinder, Class::ClassFinder, Class::ClassChooser,
Class::PluginPicker, or something along those lines perhaps?
--Eric
--
Speak softly and carry a big carrot.
---------------------------------------------------
http://scratchcomputing.com
---------------------------------------------------