【发布时间】:2015-03-06 00:18:03
【问题描述】:
我想根据类型参数创建特定的对象。 伪代码如下所示。
sub new {
my $type = shift;
if($type eq "S1") {$interface = X->new(); }
if($type eq "S2") {$interface = Y->new(); }
etc...
return $interface;
}
选项可能是:
- 用 $type 参数替换“包”名称。需要与 $type 协调包名称。
- 在 Master 构造函数中使用 Hash{S1 => X} 根据传递的 $type 选择 Value。添加新时需要哈希维护 对象类型。
我不喜欢上面的任何一个。寻找真正的多态方式来实现这一目标。 谢谢你, k
【问题讨论】:
-
我不明白你期望什么样的解决方案。在我看来,必须有一种方法将
S1与X和S2与Y相关联,因此您的选项2 之类的事情是不可避免的。S1和S2有什么你没有告诉我们的吗?
标签: perl oop polymorphism