首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >界面设计?我可以迭代地做这件事吗?我应该如何处理对接口的更改?

界面设计?我可以迭代地做这件事吗?我应该如何处理对接口的更改?
EN

Stack Overflow用户
提问于 2009-06-02 00:09:35
回答 6查看 269关注 0票数 2

在C#或Java中定义接口的最佳方法是什么?当真正的需求出现时,我们需要泛型或添加方法吗?

问候你,斯里尼瓦斯

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 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

票数 3
EN

Stack Overflow用户

发布于 2009-06-02 13:09:23

引用Joshua Bloch的话:

如果有疑问,就省略掉它。

您可以随时在以后添加到接口。一旦某个成员成为界面的一部分,就很难对其进行更改或删除。在创建接口时要非常保守,因为它们是绑定合同。

作为附注,here is an excellent interview与Vance Morrison ( Microsoft CLR团队的)进行了讨论,他在其中提到了未来版本的CLR可能允许为其成员提供“混合”或具有默认实现的接口。

票数 1
EN

Stack Overflow用户

发布于 2009-06-02 13:24:36

如果您的界面是与其他项目和团队共享的代码的一部分,请听取Cheeso的意见。但是,如果您的接口是私有项目的一部分,并且您可以访问所有的变更点,那么您可能一开始就不需要接口,但可以继续更改它们。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/937380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档