Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re^2: Inheritance: parent class determine which child class to use?

by fbicknel (Sexton)
on Jul 31, 2012 at 14:05 UTC ( #984601=note: print w/ replies, xml ) Need Help??


in reply to Re: Inheritance: parent class determine which child class to use?
in thread Inheritance: parent class determine which child class to use?

Thanks! I made some modifications and used the idea. Mine turned out something like:

1 package Local::Multipath; ... 45 my %mpByType; 46 47 sub new { 48 my ($class, %opts) = @_; 49 return bless \%opts, $class; 50 } 51 52 sub factory { 53 my (%opts) = @_; 54 croak ("Missing parameters!") unless exists $opts{co}; 55 my $type = _whichType; 56 my $module = "Local::Multipath::$type"; 57 { 58 eval "use $module"; 59 } 60 croak "Failed to load module $module: $@\n" if $@; 61 $mpByType{$type}->new (%opts); 62 } 63 64 sub REGISTER_TYPE { 65 my ($type) = @_; 66 my ($name) = $type =~ m/Multipath::(.*)/; 67 $mpByType{$name} = $type; 68 }
...
1 package Local::Multipath::DMMP; 2 use strict; 3 use warnings; ... 7 8 REGISTER_TYPE Local::Multipath::DMMP; ...
... somewhere else in code land ...
my $mp = Local::Multipath::factory (co => $conf);

The _whichType function returns 'DMMP' or 'Powerpath' after sniffing around for what we actually have.

It's nearly the same as what you suggested, but I didn't need the added 'type' attribute in this case, so simpler.

I could almost get away without the REGISTER_TYPE, but it has the added appeal of not having to hard code the things Multipath can handle. Just add a new module like the DMMP module shown to add new capabilities;

Thanks for the suggestion: perfect synergy.


Comment on Re^2: Inheritance: parent class determine which child class to use?
Select or Download Code

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others having an uproarious good time at the Monastery: (10)
As of 2015-07-07 00:37 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 (86 votes), past polls