基類是一個作業系統類
代碼
package os;
require Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(temp);
sub getDF{}
sub temp{
my $this = shift;
print $this->getDF();
print "\n";
}
sub new{
my $class =shift;
my $this = {};
bless $this,$class;
return $this;
}
1;
兩個子類分別是sunos和hpos
代碼
package hpos;
require Exporter;
require os;
@ISA = qw(Exporter os);
@EXPORT= qw();
my %cmd =(
'df' => 'bdf -l',
'ps' => 'ps -efx'
);
sub getDF{
return $cmd{'df'};
}
sub new{
my $class =shift;
my $this = os->new();
bless $this,$class;
return $this;
}
代碼
package sunos;
require Exporter;
require os;
@ISA = qw(Exporter os);
@EXPORT= qw();
my %cmd =(
'df' => 'df -kl',
'ps' => 'ps -ef'
);
sub getDF{
return $cmd{'df'};
}
sub new{
my $class =shift;
my $this = os->new();
bless $this,$class;
return $this;
}
1;
對象建立工廠
package factory;
sub createOS{
my $self=shift;
my $os = shift;
return new sunos if ($os eq 'sun');
return new hpos if ($os eq 'hp');
}
sub createDB{
}
1;
用戶端程式
#!/usr/bin/perl
push(@INC,`pwd`);
use sunos;
use hpos;
use factory;
$os = factory->createOS('hp');
$os ->temp();
$os = factory->createOS('sun');
$os->temp();