在C#或Java中定义接口的最佳方法是什么?当真正的需求出现时,我们需要泛型或添加方法吗?
问候你,斯里尼瓦斯
发布于 2009-06-02 00:14:58
一旦定义了接口,它就不会被更改( be changed )。你必须对界面的目的深思熟虑,并且尽可能完整。
如果您以后发现需要添加一个方法,那么您确实应该定义一个新接口,可能是一个带有附加方法的_V2接口。
附录:Here you will find some good guidelines on interface design in C#,作为总体上关于C#设计的更大、更有价值工作的一部分。它通常也适用于Java。
摘录:
尽管大多数API最好使用类和结构建模,但在某些情况下,接口更合适,或者是唯一的选择。
DO至少提供了一种接口实现类型。这有助于验证界面的设计。例如,System.Collections.ArrayList是System.Collections.IList接口的一个实现。
DO至少提供一个API来使用您定义的每个接口(接受接口作为参数的方法或类型化为接口的属性)。这有助于验证界面设计。例如,List.Sort使用IComparer接口。
DO NOT add members to a interface has add.这样做会破坏接口的实现。您应该创建一个新接口,以避免版本控制问题。
我推荐使用the broad type design guidelines。
发布于 2009-06-02 13:09:23
引用Joshua Bloch的话:
如果有疑问,就省略掉它。
您可以随时在以后添加到接口。一旦某个成员成为界面的一部分,就很难对其进行更改或删除。在创建接口时要非常保守,因为它们是绑定合同。
作为附注,here is an excellent interview与Vance Morrison ( Microsoft CLR团队的)进行了讨论,他在其中提到了未来版本的CLR可能允许为其成员提供“混合”或具有默认实现的接口。
发布于 2009-06-02 13:24:36
如果您的界面是与其他项目和团队共享的代码的一部分,请听取Cheeso的意见。但是,如果您的接口是私有项目的一部分,并且您可以访问所有的变更点,那么您可能一开始就不需要接口,但可以继续更改它们。
https://stackoverflow.com/questions/937380
复制相似问题