加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl – 在对象实例上调用new的好处是什么?

发布时间:2020-12-15 21:41:26 所属栏目:大数据 来源:网络整理
导读:我正在读 Programming Perl ,我发现这个代码片段: sub new { my $invocant = shift; my $class = ref($invocant) || $invocant; my $self = { color = "bay",legs = 4,owner = undef,@_,# Override previous attributes }; return bless $self,$class;} 使
我正在读 Programming Perl,我发现这个代码片段:
sub new {
    my $invocant = shift;
    my $class   = ref($invocant) || $invocant;
    my $self = {
        color  => "bay",legs   => 4,owner  => undef,@_,# Override previous attributes
    };
    return bless $self,$class;
}

使用这样的构造函数,在对象实例上调用new的好处是什么?我认为这是什么,对吧?我的猜测是,如果任何人想要编写这样的构造函数,他将不得不添加一些更多的代码,将第一个对象的属性复制到要创建的对象.

解决方法

因此,您可以构建同一个类的另一个对象,而不知道原始类的对象是什么 – 这可以使一些非常紧凑的工厂模式.

例如,当您需要构建需要的资源对象(如需要)和计算资源对象的成本高(例如,长时间运行的数据库查询)时,这是有用的.因此,工厂会看到它是否传递了一个旧的资源对象,如果是这样,通过调用$old_object-> new()创建一个,避免重新计算资源的资源成本.

另一个例子是,如果你有一个类别的层次结构表示动物,另一个是在模拟中构建新动物的工厂,你可以调用$newborn = $factory-> make_new_animal($mother),工厂实现只是$object->新()

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读