Package-Based Object Patterns
Delegation Intro
Build one behavior by calling another package routine.
Delegation Intro
delegation_intro.pl
use strict;
use warnings;
package Speaker;
sub base_label {
my ($name) = @_;
return "$name:makes-sound";
}
package DogSound;
sub label {
my ($name) = @_;
my $base = Speaker::base_label($name);
return "$base:woof";
}
package main;
my $name = ;
my $sound = DogSound::label($name);
print "name=$name\n";
print "sound=$sound\n";
use strict;
use warnings;
package Speaker;
sub base_label {
my ($name) = @_;
return "$name:makes-sound";
}
package DogSound;
sub label {
my ($name) = @_;
my $base = Speaker::base_label($name);
return "$base:woof";
}
package main;
my $name = ;
my $sound = DogSound::label($name);
print "name=$name\n";
print "sound=$sound\n";
use strict;
use warnings;
package Speaker;
sub base_label {
my ($name) = @_;
return "$name:makes-sound";
}
package DogSound;
sub label {
my ($name) = @_;
my $base = Speaker::base_label($name);
return "$base:woof";
}
package main;
my $name = ;
my $sound = DogSound::label($name);
print "name=$name\n";
print "sound=$sound\n";
delegation-intro
Delegation keeps reuse explicit by calling a helper package directly.