这是对Zed Shaw 很久以前在他的博客中发表的某些评论的回应。
然后,专家们将闲逛去实现他们的 Flaming Tower of Babel,没有任何评论,非常复杂的模拟启用测试,确保每个单独的类都有一个接口,并以“Impl”结束每个类,因为这是最佳实践。
我以同等的方式使用 Spring 和 Google Guice,我注意到这些框架确实使用Impl后缀,但很少使用。在我的代码中,我在任何地方都使用接口,因为有人告诉我它可以更容易地模拟等。我对这个问题有一个幼稚的理解吗?(也许模拟框架可以与抽象类或类一起使用,我不知道。我从未尝试过)对于我的具体实现,我选择了 Spring 约定,即在实现名称前加上 Default 一词。
e.g. BottleOpener (interface) is implemented by DefaultBottleOpener (class)
在这个问题上的最佳做法是什么?
UPDATE1我发现从方法返回接口很有用,因为我总是可以返回一个匿名类。