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->新() (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |