Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?
 
PerlMonks  

(jeffa) Re: Runtime instantiation decisions

by jeffa (Chancellor)
on Mar 30, 2002 at 17:01 UTC ( #155442=note: print w/ replies, xml ) Need Help??


in reply to Runtime instantiation decisions

Ahhh, the Factory Pattern!

All you need to do is make Astro::Observation the factory. It will return a class depending on what argument it receives. Here is a simple way to implement Astro::Observation:

package Astro::Observation; use Astro::Observation::Simple; use Astro::Observation::Complex; sub new { my $self = shift; my $class = shift; return Astro::Observation::Simple->new(@_) if 'simple' eq $class; return Astro::Observation::Complex->new(@_) if 'complex' eq $class; return undef; }
Which can be called like so:
my $obs = Astro::Observation->new("simple",'foo'); my $obc = Astro::Observation->new("complex",'bar');
But this way gets tiresome after you add more classes that the factory can deliver. I am quite sure that this can be avoided by using eval somehow.

UPDATE: once again - just do what the wise and resourceful Kanji said.

UPDATE x 2: that's what i was trying to do! :D
Here is a tar ball should anyone want to try this out.

jeffa

L-LL-L--L-LL-L--L-LL-L--
-R--R-RR-R--R-RR-R--R-RR
B--B--B--B--B--B--B--B--
H---H---H---H---H---H---
(the triplet paradiddle with high-hat)


Comment on (jeffa) Re: Runtime instantiation decisions
Select or Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://155442]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (15)
As of 2015-07-06 12:33 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (74 votes), past polls