【发布时间】:2010-12-16 14:29:31
【问题描述】:
我正在使用 Damian Conway 的“由内而外”的对象,正如他的精彩著作 Perl Best Practices 中所描述的那样,为我的客户的安全系统构建面向对象的接口。我遇到了在我的模块中使用内部辅助方法的需要,我通常将其指定为“_some_method”。但是,这似乎破坏了封装,因为它们可以通过包名直接调用。有没有办法让这些方法真正私有化?例如,
use SOD::MyOOInterface;
my $instance1 = SOD::MyOOInterface->new();
$instance1->_some_method; #this produces an error:
SOD::MyOOInterface::_some_method; # this results in a
# successful method call
显然我不希望 _some_method 的直接调用成功。有什么方法可以保证吗?
【问题讨论】:
-
@Randal 是的,我知道了,很抱歉我不知道这条规则。
标签: perl oop private-methods