我最近一直在尝试学习接口。
我看到了这段代码,无法理解为什么你不单独使用DateTime.Now它。我不确定为什么该界面有用,有人可以解释一下吗?这本书的作者试图解释,但我真的不明白如何按照他们所说的方式实现它:
程序员是否在抽象的海洋中迷失了自己?你可能会这么想,但实际上这很聪明。想象一下,您必须在一个类上运行一些测试,根据当前时间(或日期)给出不同的结果。这一点也不罕见。也许它是一个需要在给定日期获取汇率的金融应用程序。因此,请尝试测试代码库是否直接在方法中包含 DateTime.Now。使用 INowResolver,您可以注入您的现在并测试昨天、现在和明天
public interface INowResolver { DateTime GetNow(); }
public class NowResolver : INowResolver {
public DateTime GetNow() {
return DateTime.Now;
}
}
当我测试它时,如果我使用该NowResolver.GetNow方法或只是使用DateTime.Now.
测试:
NowResolver now = new NowResolver();
Console.WriteLine(now.GetNow());
Console.WriteLine(DateTime.Now);
System.Threading.Thread.Sleep(1000);
Console.WriteLine(now.GetNow());
Console.WriteLine(DateTime.Now);
输出:
07/02/2019 15:14:56
07/02/2019 15:14:56
07/02/2019 15:14:57
07/02/2019 15:14:57