Perl面向对象编程:委托、继承与绑定技术解析
1. 委托(Delegation)
委托是一种对象将方法调用转发给指定委托对象的技术。例如,在下面的示例中, Employee 类将所有与税收相关的功能委托给 $accounting_dept 对象:
package Employee;
sub compute_after_tax_income {
$me = $_[0];
return $accounting_dept->compute_after_tax_income($me);
}
在某些情况下,你可能希望将类未处理的所有方法调用自动转发给委托对象。在 Perl 中,这很容易实现,因为当在包或其基类中找不到某个过程时,会调用 AUTOLOAD 函数:
package Employee;
sub AUTOLOAD {
my $obj = $_[0];
# $AUTOLOAD 包含缺失方法的名称
# 永远不要传播 DESTROY 方法
return if $AUTOLOAD =~ /::DESTROY$/;
# 去掉前面的包名(如 Employee::)
$AUTOLOAD =~ s/^.*:://;
$obj->{delegate}->$AUTOLOAD(@_); # 注意,$obj 仍然是 @_ 的一部分,
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



