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

前端之家收集整理的这篇文章主要介绍了perl – 在对象实例上调用new的好处是什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在读 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->新()

猜你在找的Perl相关文章