我不确定ConnectionProxy
和Connection
对象之间的差异。 Connection对象应该有一个标准的接口以允许它们互换使用,以及指定它们之间差异的实现。
Perl中的“接口”是轻量级的。它们只是一个物体必须履行的期望的表述,以便说明物体DOES
那个角色。
至于连接工厂
use English qw<$EVAL_ERROR>;
...
foreach my $con_class (
qw<
Connection::HTTPS
Connection::HTTP
Connection::Telnet
Connection::SSH
>) {
my $conn;
eval { $conn = $con_class->new(HostAndPort => '127.0.0.1:21'); };
return $conn if $conn && !$EVAL_ERROR;
$logger->error($EVAL_ERROR);
}
的最简单的实现现在,我会倾向于保持连接类的列表中某些配置的地方(最好是YAML,对我来说)。但是,这又是最简单的故障切换实施。
只是作为一个开发问题,我觉得为每个接口进行通用测试是很有用的。如果你说类C DOES
接口I,通用测试可以在将它添加到可用接口实现列表之前验证这个事实。该测试可以验证编译器可以做的相同事情 - 等等。
这是从http://stackoverflow.com/questions/9630554/best-ways-to-handle-the-connection-interface – daxim 2012-03-12 18:51:06