How 'bout:
#!/usr/bin/perl -w ### set up some packages ### this would normally be done using their own files { package Nifty; sub new { my $type = shift; my $self = {@_}; if( $self->{type} ){ # require $self->{type}; # if the Nifty::A packages # were in their own files $type = $self->{type}; } return bless( $self, $type); } sub get { return "Some_Value"; } ### default print method sub print_it { my $self = shift; my $str = shift; return $str; } } { package Nifty::A; @Nifty::A::ISA = qw(Nifty); sub print_it { my $self = shift; my $str = shift; return "<a href=$str>$str</a>"; } } { package Nifty::B; @Nifty::B::ISA = qw(Nifty); sub print_it { my $self = shift; my $str = shift; return uc($str); } } # more types et cetera ### here is the main program use strict; my ($obj,$val); $obj = Nifty->new(); $val = $obj->get(); print $obj->print_it( $val ) ,"\n"; $obj = Nifty->new(type=>'Nifty::A'); $val = $obj->get(); print $obj->print_it( $val ) ,"\n"; $obj = Nifty->new(type=>'Nifty::B'); $val = $obj->get(); print $obj->print_it( $val ) ,"\n"; exit;


Basically, put the normal functionality in the base class. Anything that changes, put in the sub classes.

my @a=qw(random brilliant braindead); print $a[rand(@a)];

In reply to Re: Re: Re: OO design question by Rhandom
in thread OO design question by nop

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.