[OT] Perl OO Question.

McGlinchy, Alistair Alistair.McGlinchy at marks-and-spencer.com
Thu Oct 5 17:10:20 BST 2006


Hi All,

I have a noddy OO question.

I am trying to OO-ify some file grepping code.  Every so often files
appear in a directory and they all need the same generic tasks performed
on them (scan for useful data, export stats into a standard format,
maybe update RRD files, compress and move it to an archive). However the
actual file formats varies enormously so I need bespoke code for each
file type.  I have this stub below from a working mock-up, but it just
seems wrong to me.  

Surely a call to MainframeFile->new() must return a MainframeFile
object; or is it ok to return a subclass of MainframeFile?
I'm not even sure that MainframeFile should be allowed to "use"
MainframeFile::SNI and MainframeFile::CCU at all. It seems backward.
Perhaps I need a separate class that knows about MainframeFile,
MainframeFile::SNI and MainframeFile::CCU and does the choice for me.
If so what would it look like?

Cheers,

Alistair


package MainframeFile;
use MainframeFile::SNI;
use MainframeFile::CCU;
# Etc..

sub new {
    my $class = shift;
    my $self = bless {}, $class;

    my $file_name= shift;
    $self->set_file_name($file_name);

    # Check for special cases 
    my $sub_self;
    $sub_self =  MainframeFile::SNI->new($self) and return $sub_self;   
    $sub_self =  MainframeFile::CCU->new($self) and return $sub_self;

    # Not a special case. Return the normal class
    return $self;  
}

sub compress {}
sub archive {}



**********************************************************************
Registered Office:
Marks and Spencer plc
Waterside House
35 North Wharf Road
London
W2 1NW

Registered No. 214436 in England and Wales.

Telephone (020) 7935 4422
Facsimile (020) 7487 2670

<<www.marksandspencer.com>>

Please note that electronic mail may be monitored.

This e-mail is confidential. If you received it by mistake, please let us know and then delete it from your system; you should not copy, disclose, or distribute its contents to anyone nor act in reliance on this e-mail, as this is prohibited and may be unlawful.
2005




More information about the london.pm mailing list