这是简单Data类的简化版本:
class Data
{
public function __construct(string $key, string $value, int $ttlInSeconds)
{
$this->key = $key;
$this->value = $key;
$this->ttlInSeconds = $ttlInSeconds;
}
protected function getExpiration()
{
$dateHelper = new DateHelper();
return $dateHelper->getCurrentTimestamp() + $this->ttlInSeconds;
}
}
如您所见,DateHelper具有明显的依赖性,它基本上是一组日期获取器和操纵器方法。 现在,提到的Data类已在代码中广泛使用。通过构造函数设置DateHelper当然是我要选择的第一个选项!如果我这样做的话,我的代码将易于测试,但使用起来将更加困难和丑陋。 不仅如此,无论使用此简单Data类的任何类都具有完全相同的要求,这意味着DateHelper也将出现在许多其他类的构造函数中。什么更丑。 我想到的其他解决方案是:
最后2个解决方案几乎相同,我更喜欢3.点。 但是我不会说这两种解决方案都很方便。 另外一个重要的信息是我不想去自动装配。
我真的不想发动关于“可用性与可测试性”的争论,只是想知道这里是否要遵循任何经验法则。