接口实现对

2005年12月8日

将每个类与其接口配对的做法。因此,您会看到成对的东西 - 比如 ICustomer 和 Customer 或 Customer 和 CustomerImpl。在很多方面,它与 C/C++ 中每个类的头文件习惯相呼应,尽管在这种情况下,接口和实现实际上是独立的类型。

这种方法的优势在于,您可以通过提供接口的另一种实现来完全替换任何东西。

然而,这不是我特别喜欢的技术。如果您不打算有多个实现,那么使用接口会增加额外的努力来保持所有内容同步(尽管好的 IDE 会有所帮助)。此外,它隐藏了您实际上提供多个实现的情况。

正如通常情况下一样,权衡取决于您是编写应用程序类还是库。在应用程序中,如果您需要一个没有接口的接口,您可以简单地执行 提取接口,就完成了。对于发布的库,您的用户无法获得这种快速反馈,因此将您的发布类型设为接口更有用。但是,仅仅在您的 发布接口 中模仿实现类很少是最好的做法。接口应该围绕您的客户的需求进行设计,通常这些需求与实现不匹配。