Hi all
I have a class that can create an object using data coming from different sources / formats. Like:
package My sub new { my ($class,%args) = @_; my $self = bless {}, $class; if ($args{source} eq 'xml') { require My::XML; @ISA = qw/My::XML/; } elsif ($args{source} eq 'json') { require My::JSON; @ISA = qw/My::JSON/; } $self->_init(); # Versions in both My::XML and My::JSON return ($self); } # rest of methods sub method1 { ... } sub method2 { ... }
The packages My::XML and My::JSON:
package My::XML; sub _init { ... } 1; package My::JSON; sub _init { ... } 1;
The calling code would be:
use My; my $obj = My->new(source=>"xml"); # Do whatever with $obj
Is this a correct design to face this? Any caveat you may anticipate? Are there better alternatives?
Thank you very much in advance for your help
citromatik
In reply to Conditional inheritance strategy by citromatik
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |