citromatik has asked for the wisdom of the Perl Monks concerning the following question:
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
Back to
Seekers of Perl Wisdom